У меня есть строка "nameOfThe_String"
. Здесь первая буква строки должна быть заглавной. Итак, я использовал
String strJobname="nameOfThe_String";
strJobname=strJobname.substring(0,1).toUpperCase()+strJobname.substring(1);
Теперь мне нужно вставить пробел перед заглавными буквами. Итак, я использовал
strJobname=strJobname.replaceAll("(.)([A-Z])", "$1 $2");
Но здесь мне нужен вывод как "Name Of The_String"
. После '_'
мне не нужно никакого пробела, даже если S
- это заглавная буква.
Как я могу это сделать? Пожалуйста, помогите мне с этим.
3 ответа
strJobname=strJobname.replaceAll("([^_])([A-Z])", "$1 $2");
Символ ^ в качестве первого символа в квадратных скобках означает: Не этот символ. Итак, с первой группой скобок вы говорите: любой символ, кроме _. Однако обратите внимание, что ваше регулярное выражение может также вставлять пробелы между последовательными заглавными буквами.
При осмотре вы можете использовать:
String strJobname="nameOfThe_String";
strJobname = Character.toUpperCase(strJobname.charAt(0)) +
strJobname.substring(1).replaceAll("(?<!_)(?=[A-Z])", " ");
//=> Name Of The_String
Вот другой способ, который может удовлетворить ваши требования.
public static void main(String[] args) {
String input;
Scanner sc = new Scanner(System.in);
input = sc.next();
StringBuilder text = new StringBuilder(input);
String find = "([^_])([A-Z])";
Pattern word = Pattern.compile(find);
Matcher matcher = word.matcher(text);
while(matcher.find())
text = text.insert(matcher.end() - 1, " ");
System.out.println(text);
}
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].