У меня есть строка, которая содержит слова в смеси символов верхнего и нижнего регистра.
Например: string myData = "a Simple string";
Мне нужно преобразовать первый символ каждого слова (разделенных пробелами) в верхний регистр. Поэтому я хочу получить результат как:string myData ="A Simple String";
Есть ли простой способ сделать это? Я не хочу разбивать строку и делать преобразование (это будет моим последним средством). Также гарантируется, что строки на английском языке.
Ответы:
MSDN: TextInfo.ToTitleCase
Убедитесь, что вы включаете:
using System.Globalization
источник
Actual result: "War And Peace"
.text = Regex.Replace(text, @"(?<!\S)\p{Ll}", m => m.Value.ToUpper());
, но это далеко не идеально. Например, он по-прежнему не обрабатывает кавычки или скобки -"(one two three)"
->"(one Two Three)"
. Возможно, вы захотите задать новый вопрос после того, как вы точно определите, что вы хотите делать с этими делами.Попробуй это:
Как уже указывалось, использование TextInfo.ToTitleCase может не дать вам точных результатов, которые вы хотите. Если вам нужно больше контроля над выводом, вы можете сделать что-то вроде этого:
А затем используйте это так:
источник
Еще один вариант. Основываясь на нескольких советах, я сократил его до этого метода расширения, который отлично подходит для моих целей:
источник
Лично я попробовал
TextInfo.ToTitleCase
метод, но я не понимаю, почему он не работает, когда все символы в верхнем регистре.Хотя мне нравится функция util, предоставляемая Winston Smith , позвольте мне предоставить функцию, которую я сейчас использую:
Игра с некоторыми тестовыми строками:
Давать вывод :
источник
ToLower()
всю строку, вы бы предпочли выполнить всю эту работу самостоятельно и вызывать одну и ту же функцию для каждого отдельного символа? Это не только уродливое решение, оно дает нулевую выгоду и даже займет больше времени, чем встроенная функция.rest = words[i].Substring(1).ToLower();
Недавно я нашел лучшее решение.
Если ваш текст содержит каждую букву в верхнем регистре, TextInfo не будет преобразовывать его в соответствующий регистр. Мы можем исправить это, используя функцию нижнего регистра внутри:
Теперь это преобразует все, что входит в Propercase.
источник
источник
Если кто-то заинтересован в решении для Compact Framework:
источник
Вот решение этой проблемы ...
источник
Используйте
ToLower()
сначала, чемCultureInfo.CurrentCulture.TextInfo.ToTitleCase
на результат, чтобы получить правильный вывод.источник
Мне нужен был способ справиться со всеми заглавными словами, и мне понравилось решение Рикки А.Х., но я сделал шаг вперед, чтобы реализовать его как метод расширения. Это позволяет избежать необходимости создавать свой массив символов, а затем каждый раз явно вызывать для него ToArray - так что вы можете просто вызвать его в строке, например:
использование:
код:
источник
Это лучше понять, попробовав собственный код ...
Читать далее
http://www.stupidcodes.com/2014/04/convert-string-to-uppercase-proper-case.html
1) Преобразовать строку в верхний регистр
2) Преобразовать строку в нижний регистр
3) Преобразовать строку в TitleCase
источник
Вот реализация, символ за символом. Должен работать с "(Один Два Три)"
источник
источник
Вы можете напрямую изменить текст или строку на правильные, используя этот простой метод, после проверки на наличие нулевых или пустых значений строки для устранения ошибок:
источник
Попробуй это:
Вызовите этот метод в событии TextChanged TextBox.
источник
Я использовал вышеуказанные ссылки и полное решение:
// Нужен результат типа «Infoa2z означает всю информацию»
// Нам нужно также преобразовать строку в нижний регистр, иначе она не будет работать должным образом.
http://www.infoa2z.com/asp.net/change-string-to-proper-case-in-an-asp.net-using-c#
источник
Это то, что я использую, и это работает в большинстве случаев, если пользователь не решит переопределить его, нажав Shift или Caps Lock. Как на клавиатурах Android и iOS.
источник
Для тех, кто хочет сделать это автоматически при нажатии клавиш, я сделал это с помощью следующего кода в vb.net на пользовательском элементе управления textbox - очевидно, вы также можете сделать это с помощью обычного textbox - но мне нравится возможность добавлять повторяющийся код для определенных элементов управления с помощью пользовательских элементов управления это соответствует концепции ООП.
источник
Прекрасно работает даже в случае с верблюдом: «SomeText in YourPage»
источник
Как метод расширения:
Использование:
Результат:
Kebab Is Deliciou's ;d C...
источник
Альтернатива со ссылкой на
Microsoft.VisualBasic
(обрабатывает строчные буквы тоже):источник
Без использования
TextInfo
:Он перебирает каждую букву в каждом слове, преобразуя его в верхний регистр, если это первая буква, иначе преобразуя его в нижний регистр.
источник
Я знаю, что это старый вопрос, но я искал то же самое для C, и я понял это, поэтому я решил опубликовать его, если кто-то другой ищет путь в C:
источник