如何在Java中检查字符串是否仅包含ASCII?

2025年1月6日 | 3 分钟阅读

美国信息交换标准代码(ASCII)是一种字符的数字表示。Java使用Unicode系统并支持多种语言。为了简洁起见,我们理解它首先将字符转换为一个唯一的数字,然后该数字被转换为机器级代码。ASCII值的范围是0到127。此时,我们希望确定一个字符串是否仅包含ASCII字符。可以使用String.matches()方法,当传入一个Regex(正则表达式)时,它会返回一个布尔值。

方法:使用String.matches()

提供的Java程序使用此方法来检查两个字符串是否仅包含ASCII字符。为了进行此检查,它使用了String.matches()方法和正则表达式\\A\\p{ASCII}*\\z。\\A\\p{ASCII}*\\z是一个正则表达式,它确保字符串中仅使用ASCII字符(\\p{ASCII}),从开头(\\A)到结尾(\\z)。该程序指定的两个字符串称为s1和s2,其中s1仅包含ASCII字符,而s2包含ASCII和非ASCII字符。接下来,对于每个字符串,它会打印ASCII检查的结果。

实施

文件名: AsciiChecking.java

输出

Is the String s1 contains only ASCII characters :true
Is the String s2 contains only ASCII characters :true

方法:使用for循环

考虑到ASCII值的范围已知在0到127之间,如果任何Unicode字符超出此范围,则表明字符串包含非ASCII字符。

算法

步骤1:我们首先定义一个布尔变量,并将其默认值设置为true。

步骤2:因为我们首先认为字符串仅包含ASCII字符

步骤3:接下来,我们逐个遍历每个字符并确定其范围。如果它不落在0到127之间,我们将布尔变量的值设置为false。

步骤4:在控制台窗口中打印结果。

实施

文件名: AsciiValuePrediction.java

输出

Is the String str1 contains only ASCII characters :true
Is the String str2 contains only ASCII characters :true

复杂度分析

上述程序的时(Time Complexity)为O(N1 + N2),其中N1和N2分别为str1和str2的长度,空(Space Complexity)为O(1)。