การใช้นิพจน์ทั่วไป
คุณสามารถค้นหาว่าค่าสตริงเฉพาะมีอักขระ ASCII หรือไม่โดยใช้นิพจน์ทั่วไปต่อไปนี้ -
\\A\\p{ASCII}*\\z
matches() เมธอดของคลาส String ยอมรับนิพจน์ทั่วไปและตรวจสอบว่าสตริงปัจจุบันตรงกับนิพจน์ที่ระบุหรือไม่ ถ้าใช่ จะส่งคืนค่า จริง มิฉะนั้น คืนค่า เท็จ
ดังนั้น เรียกใช้ matches() เมธอดบนอินพุต/สตริงที่ต้องการโดยส่งนิพจน์ทั่วไปที่ระบุข้างต้นเป็นพารามิเตอร์
ตัวอย่าง
import java.util.Scanner; public class OnlyASCII { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter a string value: "); String input = sc.nextLine(); //Verifying for ACCII boolean result = input.matches("\\A\\p{ASCII}*\\z"); if(result) { System.out.println("String approved"); } else { System.out.println("Contains non-ASCII values"); } } }
ผลลัพธ์1
Enter a string value: hello how are you String approved
ผลลัพธ์2
Enter a string value: whÿ do we fall Contains non-ASCII values
การตรวจสอบอักขระแต่ละตัว
หากคุณแปลงอักขระ ASCII เป็นจำนวนเต็ม ผลลัพธ์ทั้งหมดจะน้อยกว่าหรือเท่ากับ 127
-
charAt() วิธีการของคลาส String ยอมรับค่าจำนวนเต็มและส่งกลับอักขระที่ดัชนีที่ระบุ
-
การใช้วิธีนี้ดึงอักขระแต่ละตัวในสตริงที่กำหนดและตรวจสอบว่ามีค่ามากกว่า 127 หรือไม่
ตัวอย่าง
import java.util.Scanner; public class OnlyASCII { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter a string value: "); String input =sc.next(); //Converting given string to character array 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("Contains non-ASCII values"); } } }
ผลลัพธ์1
Enter a string value: whÿ false Contains non-ASCII values
ผลลัพธ์2
Enter a string value: hello true String approved