У меня есть строка текста (в основном около 5-6 слов), которую мне нужно преобразовать.
На данный момент текст выглядит так:
THIS IS MY TEXT RIGHT NOW
Я хочу преобразовать его в:
This Is My Text Right Now
Я могу перебрать мою коллекцию строк, но не знаю, как выполнить эту модификацию текста.
Я, вероятно, предпочитаю вызывать ToTitleCase из CultureInfo ( System.Globalization ), чем Thread.CurrentThread ( System.Threading )
но он должен быть таким же, как решение jspcal
РЕДАКТИРОВАТЬ
На самом деле эти решения являются не то же самое :
CurrentThread
--calls ->CultureInfo
!System.Threading.Thread.CurrentThread.CurrentCulture
System.Globalization.CultureInfo.CurrentCulture
Ссылки:
источник
Есть несколько способов преобразовать первый символ строки в верхний регистр.
Первый способ - создать метод, который просто ограничивает первый символ и добавляет остальную часть строки с помощью подстроки:
Второй способ (который немного быстрее) - разбить строку на массив символов, а затем заново построить строку:
источник
Не тестировалось, но должно работать что-то вроде этого:
По сути, он говорит: «предварительно сформировать совпадение регулярного выражения для всех вхождений буквенно-цифрового символа, следующего за другим буквенно-цифровым символом, а затем заменить его собственной версией в нижнем регистре»
источник
Если вы используете веб-страницу, вы также можете использовать CSS:
style="text-transform:capitalize;"
источник
ASP.NET
показывает, что OP делает это через WEB. Конечно, это не ответ на вопрос, потому что OP требовал решения,C#
но он решает проблему и может быть альтернативным решением. +1При создании больших таблиц скорость вызывает беспокойство, поэтому вторая функция Джейми Диксона является лучшей, но она не работает полностью как есть ...
Он не переводит все буквы в нижний регистр, и он использует только первую букву строки, а не первую букву каждого слова в строке ... опция ниже устраняет обе проблемы:
Хотя на данный момент неизвестно, будет ли это все еще самым быстрым вариантом,
Regex
решение, предложенное Джорджем Мауэром, может быть быстрее ... тот, кто достаточно заботится, должен его протестировать.источник
Я не знаю, является ли приведенное ниже решение более или менее эффективным, чем ответ jspcal, но я почти уверен, что для него требуется меньше создания объектов, чем у Джейми и Джорджа.
источник
В дополнение к первому ответу не забудьте изменить указатель начала выделения строки на конец слова, иначе вы получите обратный порядок букв в строке.
источник
Попробуйте эту технику; Возвращает желаемый результат
И не забывайте использовать
System.Globalization
.источник
Одно из возможных решений, которое может вас заинтересовать. Обход массива символов справа налево и наоборот за один цикл.
источник
jspcal ответ как расширение строки.
Program.cs
StringExtensions.cs
источник