Как добавить подчеркивание перед каждой заглавной буквой внутри строки Java?
У меня есть строка, подобная этой "HelloWorldMyNameIsCarl", и я хочу, чтобы она стала чем-то вроде"Hello_World_My_Name_Is_Carl". Как я могу это сделать?
3 ответов
да, регулярные выражения могут сделать это за вас:
"HelloWorldMyNameIsCarl".replaceAll("(.)([A-Z])", "_")
выражение [A-Z]
будет соответствовать каждой букве верхнего регистра и поместить его во вторую группу. Вам нужна первая группа .
чтобы избежать замены первого 'H'.
As Пилигрим указал, это решение не работает для произвольных языков. Чтобы поймать любую заглавную букву, определенную Unicode stardard, нам нужно Unicode 4.1 subproperty \p{Lu}
, который соответствует все прописные буквы. Таким образом, более общее решение выглядит как
"HelloWorldMyNameIsCarl".replaceAll("(.)(\p{Lu})", "_")
Спасибо Пилигрим.
это задание? Чтобы вы начали:
- создать StringBuffer
- повторите строку.
- проверьте каждый символ в верхнем регистре (
java.lang.Character
класса поможет) - добавить подчеркивание в буфер, если это так.
- добавить текущий символ в буфер.
вот подсказка, чтобы вы подумали о возможном решении:
- найти способ разделения строки на части в каждой заглавной букве
- присоединитесь к разделенным строкам с подчеркиванием между ними
полезные ключевые слова:
- сплит
- регулярное выражение/выражение