考虑如下一行:
[Hello簲 bye 簲 ]
此行包含中英文字母,不符合我的利益。所以我想知道如果一个字符串没有任何语言'英文以外的字母。任何的想法?
修改
我不想用regex
来解决它。否则我会标记它!
答案 0 :(得分:0)
https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html
在课堂上,有这样的:
getNumericValue(char ch) 返回指定的Unicode字符表示的int值。
我相信你可以做更多的研究来找到英文字母的unicode值,这样你就可以检查char的值是否在英文字符范围内。
答案 1 :(得分:0)
如果您不想使用正则表达式,可以使用下面的
String str = "Hello簲 bye 簲";
boolean isValid = true;
for (char c : str.toCharArray()) {
if (!(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z')) {
isValid = false;
break;
}
}
System.out.println(isValid);
答案 2 :(得分:-1)
您可以在此程序中使用所有英文字符的 ASCII 值 - 数字,大写和小写字母(以及必须检查空格)。
逻辑:遍历字符串的每个字符并检查当前字符是否为英文字符,即 ASCII 值位于 48之间57 (对于数字0 - 9), 65和90 (对于大写字母)或 97和122 (对于小写字母)或是<强>空白。如果不是这些中的任何一个,那么它就是非英语字符。
以下是代码:
String s = <-- THE STRING
int illegal = 0; //to count no. of non english characters
for(int i=0; i< s.length(); i++){
int c = (int)s.charAt(i);
if(!((c>=48 && c<=57)||(c>=65 && c<=90)||(c>=97 && c<=122)||((char)c == ' ')))
illegal++;
}
if(illegal > 0)
System.out.print("String contains non english characters");
else
System.out.print("String does not contain non english characters");
注意:确保您运行该程序的平台支持这些字符。 中文的字符编码是Unicode
(Unicode支持几乎所有语言)或UTF-16
。确保在运行程序时使用此{甚至UTF-32
编码,并且如果不是UTF-16/32
,则平台支持Unicode
。
我在计算机上使用以下测试数据测试了此代码:
String s = "abcdEFGH 745401 妈妈";
我在Unicode上运行时得到了正确的输出。在不支持Unicode
或UTF-16/32
的平台上,编译器会将中文字母妈妈
视为??????
,并且可能会在程序中产生错误。在执行期间,系统将成为??????
的中文字母将被忽略,因此我测试的上述输入的输出将为String does not contain non English characters
,这是错误的。因此,如果您在在线终端/ IDE或移动电话上运行程序,请务必注意这一因素。如果您在Windows / Mac计算机上运行它,则无需担心。
我希望它可以帮到你。