如果字符是字母,则调用Character.isLetter(c)
返回true
。但是,有没有一种方法可以快速发现String
是否只包含ASCII码的基本字符?
发布于 2010-08-27 22:37:44
你可以用java.nio.charset.Charset做到这一点。
import java.nio.charset.Charset;
public class StringUtils {
public static boolean isPureAscii(String v) {
return Charset.forName("US-ASCII").newEncoder().canEncode(v);
// or "ISO-8859-1" for ISO Latin 1
// or StandardCharsets.US_ASCII with JDK1.7+
}
public static void main (String args[])
throws Exception {
String test = "Réal";
System.out.println(test + " isPureAscii() : " + StringUtils.isPureAscii(test));
test = "Real";
System.out.println(test + " isPureAscii() : " + StringUtils.isPureAscii(test));
/*
* output :
* Réal isPureAscii() : false
* Real isPureAscii() : true
*/
}
}
发布于 2010-08-27 22:40:50
这是另一种不依赖于库,而是使用正则表达式的方法。
您可以使用这一行:
text.matches("\\A\\p{ASCII}*\\z")
整个示例程序:
public class Main {
public static void main(String[] args) {
char nonAscii = 0x00FF;
String asciiText = "Hello";
String nonAsciiText = "Buy: " + nonAscii;
System.out.println(asciiText.matches("\\A\\p{ASCII}*\\z"));
System.out.println(nonAsciiText.matches("\\A\\p{ASCII}*\\z"));
}
}
发布于 2010-08-27 23:37:23
遍历字符串并确保所有字符的值都小于128。
Java字符串在概念上编码为UTF-16。在UTF-16中,ASCII字符集被编码为值0- 127,并且保证任何非ASCII字符(可能由多个Java字符组成)的编码不包括数字0- 127
https://stackoverflow.com/questions/3585053
复制相似问题