Есть строка из которой нужно выбрать все слова, которые начинаются с большой буквы и записать в новую строку, а с маленькой также в новую строку. Понимаю, что нужно использовать регулярные выражения, но к сожалению из этого ничего не получилось
Данный код выводит все слова которые начинаются с большой буквы в новую строку, но как вывести остальные слова, которые начинаются с маленькой буквы в другую строку?
Pattern p1 = Pattern.compile ("[A-Z][a-z]+");
Matcher m= p1.matcher("Dont be shy Just be yourself");
while (m.find())
{
System.out.print(m.group());
}
Решение, которое вам требуется:
Pattern pattern = Pattern.compile("((?<capital>[A-Z][a-z']*)|(?<regular>[a-z']+))");
Matcher matcher = pattern.matcher("Don't be shy. Just be yourself.");
StringBuilder capital = new StringBuilder();
StringBuilder regular = new StringBuilder();
while (matcher.find()) {
String upper = matcher.group("capital");
String lower = matcher.group("regular");
if (upper != null) {
capital.append(upper).append(' ');
} else {
regular.append(lower).append(' ');
}
}
if (capital.length() > 0) {
capital.setLength(capital.length() - 1);
}
if (regular.length() > 0) {
regular.setLength(regular.length() - 1);
}
System.out.println(capital);
System.out.println(regular);
Напечатает:
Don't Just
be shy be yourself
Если не получается с регулярными выражениями, может будет полезен вариант без них. Вы можете использовать метод Character.isUpperCase(char);
String text = "aaa Bbb cCc";
String[] split = text.split(" ");
StringBuilder upBuilder = new StringBuilder();
StringBuilder lowBuilder = new StringBuilder();
for (String word : split){
if (Character.isUpperCase(word.charAt(0))) upBuilder.append(word + " ");
else lowBuilder.append(word + " ");
}
System.out.println(upBuilder.toString().trim());
System.out.println(lowBuilder.toString().trim());
или вот вариант с выражениями и удалением знаков припинания
String text = "Aaa, ;;;Bbb---+ - cCc;;dDD";
text = " " + text;
text = text.replaceAll("\\p{Punct}", " ");
String up = text.replaceAll("\\W[a-z][A-z]*", "");
up = up.replaceAll("\\p{Space}+", " ").trim();
String low = text.replaceAll("\\W[A-Z][A-z]*", "");
low = low.replaceAll("\\p{Space}+", " ").trim();
System.out.println(up);
System.out.println(low);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Моя маленькая программа работает в консоли и читает данные из файла и показывает пользователю условно говоря и при соблюдении некоторых...
Добрый день столкнулся с такой проблемой , что hover не работает полноценно в svgПытаюсь менять цвет при наведении на path или класс какой нибудь:
Создается двумерный массив, который заполняется знаком -, а при i == 2, строка должна заполниться знаком +, но этого не происходитПочему?
Записываю json в переменную: