String str = "The party has been divided abs14 on! the issue, with moderates5789 concerned about the effects on the most vulnerable.";
String[] words = str.split("\\s+");
System.out.println(Arrays.toString(words));
Разбиваю строку на массив слов по пробелу. И потом надо как-то задать условие, что если в слове не содержатся спецсимволы и цифры, то его плюсую в переменную count. Подскажите, как правильно это сделать, без использования regex. Надо создавать ещё массив char?
Если без использования регулярных выражений, то можно просто в лоб:
public class Main {
public static void main(String[] args) {
String str = "The party has been divided abs14 on! the issue, with moderates5789 concerned about the effects on the most vulnerable.";
String[] words = str.split("\\s+");
int count = 0;
for (String word : words) {
if (isValidWord(word)) {
count++;
}
}
System.out.println("Count: " + count);
}
private static boolean isValidWord(String word) {
char[] chars = word.toCharArray();
for (char c : chars) {
if (!Character.isAlphabetic(c)) {
return false;
}
}
return true;
}
}
UPD:
Ручная проверка на принадлежность символа латинице:
private static boolean isLatinChar(char c) {
return (c >= 65 && c <= 90) || (c >= 97 && c <= 122);
}
где:
65 – код символа A;90 – код символа Z;97 – код символа a;122 – код символа z.При сравнении происходит неявное преобразование из char в int.
Вот вариант сделать все в одну строчку
String str = "The party has been divided abs14 on! the issue, with moderates5789 concerned about the effects on the most vulnerable.";
long count = Pattern.compile("\\s+").splitAsStream(str)
.map(w -> w.chars().allMatch(Character::isAlphabetic))
.filter(c -> c)
.count();
System.out.println("Count: " + count);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости