Я пытался использовать TextInfo.ToTitleCase
для преобразования некоторых имен в правильный случай. он отлично работает для строк в нижнем и смешанном случае, но для строк со всеми символами в верхнем регистре возвращает строку ввода как есть.
Ничто об этом поведении не упоминается в документации MSDN, какие-либо идеи?
TextInfo.ToTitleCase не работает должным образом для ВСЕХ строк CAPS
Ответ 1
От MSDN docs:
Замечания Как правило, заголовочный корпус преобразует первый символ слова в верхний регистр, а остальные символы - в нижний регистр. Однако этот метод в настоящее время не обеспечивает надлежащую оболочку для преобразования слова, которое является полностью прописным, например, акроним. В следующей таблице показано, как метод отображает несколько строк.
поэтому ожидаемое поведение. Сначала вы можете ввести строку в верхний регистр, если она заглавна, а затем запустите ToTitleCase.
Ответ 2
Я подозреваю, что слова во всех столицах должны быть аббревиатурами, такими как США.
Например, вы не ожидаете, что "Землетрясение ударит по США" будет изменено на "Earthquake Hits Usa", не так ли?
Ответ 3
В документации MSDN говорится:
Как правило, оболочка заголовков преобразует первый символ слова в верхний регистр, а остальные символы - в нижний регистр. Однако слово, которое является полностью прописным, например акроним, не преобразуется.
Таким образом, он работает по назначению. Попробуйте TextInfo.ToTitleCase(TextInfo.ToLowerCase("STRINGINCAPS")
как:
string TitleCaseString;
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
TitleCaseString = myTI.ToTitleCase(myTI.ToLowerCase("STRINGINCAPS"));