在 Java 中是否可以检查字符串是否仅包含 ASCII?

javaobject oriented programmingprogramming

使用正则表达式

您可以使用以下正则表达式 − 查找特定字符串值是否包含 ASCII 字符

\A\p{ASCII}*\z

String 类的 ma​​tches() 方法接受正则表达式并验证当前字符串是否与给定表达式匹配,如果匹配,则返回 true,否则返回 false。

因此,通过将上面指定的正则表达式作为参数传递,在输入/所需字符串上调用 ma​​tches() 方法。

示例

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

相关文章