Количество прописных и строчных букв в строке в Java

В этой статье показано, как подсчитать количество экземпляров прописных и строчных букв в строке, закодировав нашу программу или с помощью java 8 и guava API из google.

isUpperCase() и isLowerCase() в Java

Этот метод состоит из перебора символов предложения и просмотра для каждого из них, является ли оно строчным или прописным. Нам нужно создать счетчик для прописных букв и еще один для строчных букв. В конце мы выводим значения двух переменных.

Чтобы проверить, является ли символ строчным или прописным, java содержит два метода:
boolean isUpperCase(char ch): Этот метод возвращает true, если символ находится в верхнем регистре. Символ считается прописным, если его категория возвращается Character.getType(ch) равно UPPERCASE_LETTER.
boolean isLowerCase(char ch): Этот метод возвращает true, если символ в нижнем регистре. Символ пишется в нижнем регистре, если его категория возвращается Character.getType(ch) равно LOWERCASE_LETTER.

public class nombre_majuscule_minuscule {

public static void main(String[] args) {

String string="Java - это язык программирования"+
"объектно-ориентированный, созданный Sun Microsystems";

int nbr_min = nbr_min(строка);
int nbr_maj = nbr_maj(строка);

System.out.println("количество строчных букв "+nbr_min);
System.out.println("номер в верхнем регистре "+nbr_maj);

}

private static int nbr_maj(String string) {
int counter=0;
for(int i = 0; i< string.length(); i++){
char ch = string.charAt(i);
if(Character.isLowerCase(ch))
counter++;
}
счетчик возврата;
}

private static int nbr_min(String string) {
int counter=0;
for(int i = 0; i< string.length(); i++){
char ch = string.charAt(i);
if(Character.isUpperCase(ch))
counter++;
}
счетчик возврата;
}
}
Выполнение этого кода:

строчная цифра 4
заглавная буква 68

Вы можете создать рекурсивную версию обоих методов  nbr_min()  и  nbr_maj(). На этот раз мы решили запрограммировать два метода самостоятельно, предоставляемые java isUpperCase() и isLowerCase(), на основе диапазона кодов ASCII нижнего и верхнего регистра alphabet.

private static int nbr_maj_recursive(String string, int i) {
/*if i достигает размера строки
* return 0
*/
if(string.length()-i==0)
return 0;
/*в противном случае проверяем следующий символ*/
else{
char ch = string.charAt(i);
if(estUpper(ch))
/*приращение i и отсчет единицы
*прописная буква*/
return nbr_maj(string, ++i)+1;
}
return nbr_maj(string, ++i);
}
Объявление метода  nbr_min_recursive()  изменяется только на уровне проверки типа символа, которая выполняется с помощью метода  isLowercase().

private static int nbr_min_recursive(String string, int i) {
if(string.length()-i==0)
return 0;
else{
char ch = string.charAt(i);
if(isLowercase(ch))
return nbr_min(string, ++i)+1;
}
return nbr_min(string, ++i);
}
Метод  isUppercase()  эквивалентно isUpperCase().

static boolean isUpperCase(char ch){
int ascii = (int) ch;
//[А.. Z]
if((ascii>=65 & & ascii<=90)
//буквы с диакритическими знаками
|| (ascii>=192 & & ascii<=223))
return true;
возвращает false;
}
Метод  isTiny()  эквивалентно isLowerCase().

static boolean isLowercase(char ch){
int ascii = (int) ch;
//[a.. z]
if((ascii>=97 & & ascii<=122)
//буквы с диакритическими знаками
|| (ascii>=224 & & ascii<=255))
return true;
возвращает false;
}

Java 8

В Java 8 можно вычислить количество прописных и строчных букв. Мы назовем метод   chars()  который вернет IntStream  А затем мы отфильтруем прописные и строчные буквы, пропустив фильтр. В конце концов, мы воспользуемся операцией. count()  чтобы найти количество экземпляров.

public void compter_majuscules_java8() {

String phrase = "Это тест";

long counter = phrase.chars().filter(Character::isUpperCase).count();
}
А для подсчета в нижнем регистре сделайте следующее:

public void compter_minuscules_java8() {

String phrase = "Это тест";

long counter = phrase.chars().filter(Character::isLowerCase).count();
}

Google Guava

API Guava также используется для определения общего количества прописных и строчных букв в строке. Вы можете рассмотреть: ChartMatcher  как набор символов, поэтому при использовании ChartMatcher.JAVAUPPERCASE это означает любую прописную букву. Метод  rainFrom()  удалит все непрописные символы.


public void compter_majuscules_java8() {

String phrase = "Это тест";

long counter = CharMatcher.JAVA_UPPER_CASE.retainFrom(phrase).length();
}
А для подсчета в нижнем регистре сделайте следующее:

public void compter_minuscules_java8() {

String phrase = "This is a Test";

long counter = CharMatcher.JAVA_LOWER_CASE.retainFrom(phrase).length();
}