TextInfo.ToTitleCase не работает должным образом для всех строк CAPS

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

37
задан Bob Kaufman 15 August 2013 в 16:15
поделиться

3 ответа

Из MSDN docs:

Примечания Как правило, регистр заголовка преобразует первый символ слова в верхний регистр а остальные символы в нижнем регистре. Однако этот метод в настоящее время не обеспечивает надлежащий регистр для преобразования слова, которое полностью состоит из прописных букв, например аббревиатуры . В следующей таблице показано, как этот метод отображает несколько строк.

так что это ожидаемое поведение. Вы можете сначала строчные буквы, если они все в верхнем регистре, а затем запустить для нее ToTitleCase.

75
ответ дан 27 November 2019 в 03:22
поделиться

Я подозреваю, что это потому, что слова, написанные заглавными буквами, должны быть аббревиатурами, например USA.

Например, вы бы не ожидали, что "Землетрясение в США" будет изменено на "Землетрясение в США", не так ли?

8
ответ дан 27 November 2019 в 03:22
поделиться

В документации MSDN сказано:

Как правило, регистр заголовка преобразует первый символ слова в верхний регистр, а остальные символы в нижний регистр. Однако слова, написанные полностью в верхнем регистре, например аббревиатуры, не преобразуются.

Итак, это работает как задумано. Попробуйте TextInfo.ToTitleCase (TextInfo.ToLowerCase ("STRINGINCAPS")

например:

string TitleCaseString;
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
TitleCaseString = myTI.ToTitleCase(myTI.ToLowerCase("STRINGINCAPS"));
4
ответ дан 27 November 2019 в 03:22
поделиться