Как составить такое регулярное выражение которое проверяет только первую букву в строке на то является она согласной или гласной?
Тут нужно как-то регулярное выражение написать
if (string.matches("[рег-ое выражение]")) {
return true;
}
Ответ
Должно быть достаточно такого: str.matches("^(?i:[aeiouy]).*"). Для кириллицы - str.matches("^(?ui:[аеёиоуыэюя]).*")
^ обозначает начало строки
(?i:...) - включает CASE_INSENSITIVE для этой группы, чтобы не перечислять повторно заглавные буквы.
(?ui:...) Важно! Если вы работаете с юникодом, то вышеуказанный ключ не сработает. Нужно добавить UNICODE_CASE, т.е. ?ui
[aeiouy] - все гласные. Если нужно найти все согласные, то нельзя использовать [^aeiouy], т.к. в эту группу попадают вообще все символы юникода, кроме этих шести. Нужно точно так же перечислить согласные.
.* - дальше сколько угодно (хоть ноль) любых символов, кроме конца строки.
Демонстрация работы с разными строками:
public class Main {
public static void main(String[] args) {
String[] strs = {"abcd efjk", "hello world", "a", "E", "d", "", "
", "юникод"};
for (String str: strs) {
boolean test = str.matches("^(?i:[aeiouy]).*");
System.out.println(str + ": " + test);
}
}
}
Результат:
abcd efjk: true
hello world: false
a: true
E: true
d: false
: false
: false
юникод: false
Комментариев нет:
Отправить комментарий