java - 计算大写字母、小写字母、空格和其余部分(数字等)
问题描述
这不仅仅是关于字符串中的大写和小写。它是关于不是空格或字母的所有其他字符!
我正在尝试获取我正在阅读的文本文件的大写字母、小写字母、空格和其他字符的确切数量。但是,我没有得到我正在搜索的确切值。唯一真正每次都给我确切值的是小写字母。
我确实知道,根据我比较的字符,我也会得到不同的结果。但我不知道事情是从哪个角色开始的,又从哪个角色结束。试图查看 ASCII 表以获得答案,但这还不够。
以这种方式尝试过,下面的代码,以及通过 forloop 测试数组中字符的 if 语句。
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
class test {
public static void main(String args[]) throws IOException {
FileReader file = new FileReader("C:\\Users\\karwa\\Desktop\\kq.txt");
BufferedReader read = new BufferedReader(file);
int upper = 0, lower = 0, number = 0, special = 0;
boolean ch;
while (ch = read.read() != -1) {
for (char c : read.readLine().toCharArray()) {
char ch1 = c;
if (ch1 >= 'A' && ch1 <= 'Z')
upper++;
else if (ch1 >= 'a' && ch1 <= 'z')
lower++;
else if (ch1 >= '0' && ch1 <= '9' || ch1 >= '!' && ch1 <= '-')
number++;
else
special++;
}
}
System.out.println("Upper case letters : " + upper);
System.out.println("Lower case letters : " + lower);
System.out.println("Whitespaces : " + special);
System.out.println("Others : " + number);
}
}
解决方案
我建议使用Character.isUpperCase
, Character.isLowerCase
, Character.isDigit
, Character.isWhitespace
:
for (char c : read.readLine().toCharArray()) {
if(Character.isUpperCase(c)) upper++;
else if (Character.isLowerCase(c))lower++;
else if (Character.isDigit(c)) number++;
else if (Character.isWhitespace) whitespace++;
else // anything else....
}
推荐阅读
- python - 是否可以在 ElasticSearch 的索引中关联字段,以便跨字段匹配突出显示?
- nearprotocol - 如何修复“需要 AVX 支持才能运行 Wasmer VM Singlepass 后端”?
- r - 如何从 R 中数据帧的每一行中选择 n 个随机值?
- android - 无法使用 Delphi 从 Android 应用程序打开 PDF
- ios - 在视图层上缩放动画后文本像素化
- scrollview - 为什么 ScrollView 在我的 react-native 代码中不起作用?
- php - 如何在 PHP 中检查变量 $user 是否是用户对象?
- javascript - React Native - 如何在 React Navigation 中获取初始导航状态
- c# -
在 Plesk 上部署时 - c# - Automapper - 从同一排序规则中按键映射父子关系