TextInfo.ToTitleCase не работает должным образом, какие-либо лучшие решения? - PullRequest
1 голос
/ 16 ноября 2009

Я пытаюсь сделать мой заголовок статьи хорошо отформатированным, сейчас я использую TextInfo.ToTitleCase для форматирования Он хорошо справляется с большинством работ, но не настолько совершенен.

Например:

  • Оригинальная строка: война и мир
  • Ожидаемый результат: Война и мир
  • Фактический результат: Война и мир

Microsoft также использует выше в качестве примера , это, очевидно, известная проблема. Что я собираюсь сделать, так это написать список от руки для таких слов, как «а», «и», «или» и т.д. лучшее решение для этой проблемы?

Ответы [ 2 ]

1 голос
/ 17 ноября 2009

Вот реализация JavaScript из источника, которому я доверяю и который использовал сам: http://ejohn.org/blog/title-capitalization-in-javascript/

В исходном коде у него есть список исключений только в нижнем регистре, которые, как вы (я считаю, правильно), вам понадобятся.

Работа будет заключаться в том, чтобы преобразовать его в нечто, что ASP.NET может использовать на стороне сервера, конечно, но в логику уже вложено много мыслей, которые должны помочь вам с тем, что вы в итоге катите.

Удачи!

0 голосов
/ 16 ноября 2009

Я не видел решения этой проблемы в предоставленной библиотеке ... Выглядит хорошим кандидатом для метода расширения . Интересно, что он немного сложнее, чем просто список слов, и имеет несколько вариаций.

Чикагское руководство по стилю предлагает следующее:

  1. Всегда пишите первые и последнее слово.

  2. Прописать все существительные, местоимения, прилагательные, глаголы, наречия и подчиненные союзы («как», «потому что», «хотя»).

  3. Строчные все статьи, координаты союзы («и», «или», «ни»), и предлоги независимо от длина, когда они отличаются от первое или последнее слово.

  4. Строчная буква «к» в инфинитиве.

Последний случай кажется особенно сложным, так как вам нужно проанализировать, чтобы определить, используется ли «to» в инфинитиве.

...