在 Java 中是否可以检查字符串是否仅包含 ASCII?
javaobject oriented programmingprogramming
使用正则表达式
您可以使用以下正则表达式 − 查找特定字符串值是否包含 ASCII 字符
\A\p{ASCII}*\z
String 类的 matches() 方法接受正则表达式并验证当前字符串是否与给定表达式匹配,如果匹配,则返回 true,否则返回 false。
因此,通过将上面指定的正则表达式作为参数传递,在输入/所需字符串上调用 matches() 方法。
示例
import java.util.Scanner; public class OnlyASCII { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入字符串值:"); String input = sc.nextLine(); //验证 ACCII boolean result = input.matches("\A\p{ASCII}*\z"); if(result) { System.out.println("字符串已批准"); } else { System.out.println("包含非 ASCII 值"); } } }
输出 1
输入字符串值: 你好,你好吗 字符串已批准
输出 2
输入字符串值: whÿ我们会跌倒吗 包含非 ASCII 值
验证每个字符
如果将 ASCII 字符转换为整数,则所有结果都将小于或等于 127。
String 类的 charAt() 方法接受整数值并返回指定索引处的字符。
使用此方法检索给定字符串中的每个字符并验证它们是否大于 127。
示例
import java.util.Scanner; public class OnlyASCII { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入字符串值: "); String input =sc.next(); //将给定的字符串转换为字符数组 char charArray[] = input.toCharArray(); boolean result = true; for(int i = 0; i < input.length(); i++) { int test = (int)input.charAt(i); if (test<=127) { result = true; }else if (test >127){ result = false; } } System.out.println(result); if(result) { System.out.println("String approved"); }else { System.out.println("包含非 ASCII 值"); } } }
输出 1
输入字符串值: whÿ false 包含非 ASCII 值
输出 2
输入字符串值: hello true String approved