Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีลบอักขระที่ไม่ใช่ ASCII ออกจากสตริง


คลาสอักขระ Posix \p{ASCII} จับคู่อักขระ ASCII และอักขระเมตา ^ ทำหน้าที่เป็นการปฏิเสธ

กล่าวคือ นิพจน์ต่อไปนี้ตรงกับอักขระที่ไม่ใช่ ASCII ทั้งหมด

"[^\\p{ASCII}]"

วิธีการreplaceAll() ของคลาส String ยอมรับนิพจน์ปกติและสตริงการแทนที่ และแทนที่อักขระของสตริงปัจจุบัน (ตรงกับรูปแบบที่กำหนด) ด้วยสตริงการแทนที่ที่ระบุ

ดังนั้น คุณสามารถลบอักขระที่ตรงกันได้โดยการแทนที่ด้วยสตริงว่าง " โดยใช้เมธอด replaceAll()

ตัวอย่างที่ 1

นำเข้า java.util.Scanner; คลาสสาธารณะ Exp { โมฆะสาธารณะหลัก (สตริง args [] ) { Scanner sc =สแกนเนอร์ใหม่ (System.in); สตริง regex ="[^\\p{ASCII}]"; System.out.println("ป้อนข้อมูล:"); อินพุตสตริง =sc.nextLine(); ผลลัพธ์สตริง =input.replaceAll(regex, ""); System.out.println("ผลลัพธ์:"+ผลลัพธ์); }}

ผลลัพธ์

ป้อนข้อมูลที่ป้อน:เราทำอะไรลงไป ผลลัพธ์:เราตกอะไร

ตัวอย่างที่ 2

<ก่อนหน้า> นำเข้า java.util.Scanner; นำเข้า java.util.regex.Matcher; นำเข้า java.util.regex.Pattern; ตัวอย่างคลาสสาธารณะ { โมฆะคงที่สาธารณะหลัก (สตริง args [] ) { Scanner sc =สแกนเนอร์ใหม่ (ระบบ .ใน); System.out.println("ป้อนสตริงอินพุต:"); อินพุตสตริง =sc.nextLine(); สตริง regex ="[^\\p{ASCII}]"; //การสร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); //จับคู่รูปแบบที่คอมไพล์แล้วใน String Matcher matcher =pattern.matcher(input); //การสร้างบัฟเฟอร์สตริงว่าง StringBuffer sb =ใหม่ StringBuffer(); ในขณะที่ (matcher.find ()) { matcher.appendReplacement (sb, ""); } matcher.appendTail(sb); System.out.println("ผลลัพธ์:\n"+ sb.toString() ); }}

ผลลัพธ์

ป้อน input string:whÿ do we fallResult:w do we fall