Есть ли встроенная в Java функция, которая использует первый символ каждого слова в строке и не влияет на остальные?
Примеры:
jon skeet
->Jon Skeet
miles o'Brien
->Miles O'Brien
(B остается заглавной, это исключает заглавие)old mcdonald
->Old Mcdonald
*
* ( Old McDonald
было бы тоже найти, но я не ожидаю, что это будет слишком умным.)
Быстрый взгляд на документации Java Строка показывает только toUpperCase()
и toLowerCase()
, что, конечно , не дают желаемого поведения. Естественно, в результатах Google преобладают эти две функции. Это похоже на колесо, которое, должно быть, уже было изобретено, поэтому спрашивать не повредит, поэтому я смогу использовать его в будущем.
old mcdonald
? Это должно статьOld McDonald
?Ответы:
WordUtils.capitalize(str)
(из Apache Commons-Text )(Примечание: если вам нужно
"fOO BAr"
стать"Foo Bar"
, используйтеcapitalizeFully(..)
вместо этого)источник
WordUtils.capitalizeFully(str)
же и решение.Если вас беспокоит только то, что первая буква первого слова пишется с большой буквы:
источник
line
что у вас нет значения или длина <2Следующий метод преобразует все буквы в верхний / нижний регистр, в зависимости от их положения рядом с пробелом или другими специальными символами.
источник
if(Character.isLetter(chars[i])) { if(!found) { chars[i] = Character.toUpperCase(chars[i]); } found = true; } else { found = false; }
.found
вpreviousCharIsLetter
.Попробуйте этот очень простой способ
пример GivenString = "баран хороший мальчик"
Выход будет: Ram Is Good Boy
источник
Я написал небольшой класс, чтобы использовать все слова в строке.
Необязательно
multiple delimiters
, каждый со своим поведением (используйте заглавные буквы до, после или в обоих случаях для обработки подобных случаевO'Brian
);Необязательно
Locale
;Есть не порывает с
Surrogate Pairs
.LIVE DEMO
Вывод:
Примечание: первая буква всегда будет заглавной (отредактируйте источник, если вы этого не хотите).
Пожалуйста, поделитесь своими комментариями и помогите мне найти ошибки или улучшить код ...
Код:
источник
источник
Я сделал решение в Java 8, которое ИМХО более читабельно.
Суть этого решения можно найти здесь: https://gist.github.com/Hylke1982/166a792313c5e2df9d31
источник
Использование
org.apache.commons.lang.StringUtils
делает это очень просто.источник
StringUtils.capitalise(str)
устарела. См .: commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/…С этим простым кодом :
Результат: Привет
источник
Я использую следующую функцию. Я думаю, что это быстрее в производительности.
источник
С Java 9+
Вы можете использовать
String::replaceAll
так:Пример :
Выходы
источник
Используйте метод Split, чтобы разбить вашу строку на слова, затем используйте встроенные строковые функции, чтобы заглавные буквы в каждом слове, затем сложите вместе.
Псевдокод (ish)
В конце строка выглядит примерно так: «Предложение, к которому вы хотите применить заглавные буквы»
источник
Это может быть полезно, если вам нужно использовать заглавные буквы. Он использует заглавные буквы для каждой подстроки
" "
, за исключением указанных строк, таких как"a"
или"the"
. Я еще не запускал его, потому что уже поздно, должно быть все в порядке. Использует Apache CommonsStringUtils.join()
в одной точке. Вы можете заменить его простым циклом, если хотите.источник
источник
источник
Я решил добавить еще одно решение для заглавных слов в строке:
Функция:
Пример вызова:
Результат:
источник
Использование:
источник
Есть много способов преобразовать первую букву первого слова в заглавные. У меня есть идея. Это очень просто:
источник
источник
Вот простая функция
источник
Это просто еще один способ сделать это:
источник
Многоразовый метод для intiCap:
источник
Вот мое решение.
Я столкнулся с этой проблемой сегодня вечером и решил обыскать ее. Я нашел ответ от Нилама Сингха, который был почти у цели, поэтому я решил исправить проблему (разбито на пустые строки) и вызвал сбой системы.
Метод, который вы ищете, назван
capString(String s)
ниже. Это превращает «Это только 5 утра здесь» в «Это только 5 утра здесь».Код довольно хорошо прокомментирован, так что наслаждайтесь.
источник
1. Java 8 Streams
Примеры:
Для
foo bAR
чтобыFoo Bar
заменитьmap()
метод с нижеследующим:2.
String.replaceAll()
(Java 9+)Примеры:
3. Apache Commons Text
Для заглавия:
Для получения подробной информации, ознакомьтесь с этим руководством .
источник
Для тех из вас, кто использует Velocity в MVC, вы можете использовать
capitalizeFirstLetter()
метод из класса StringUtils .источник
источник
источник
Если вы предпочитаете гуаву ...
источник
источник
Краткий и точный способ заключается в следующем:
Он работает без ошибок, если вы попытаетесь изменить значение имени на три значения. Без ошибок.
источник