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

จะลบสระออกจากสตริงโดยใช้นิพจน์ทั่วไปใน Java ได้อย่างไร?


คลาสอักขระอย่างง่าย “[ ]” จะจับคู่อักขระที่ระบุทั้งหมดที่อยู่ในนั้น นิพจน์ต่อไปนี้ตรงกับอักขระยกเว้น xyz

"[xyz]"

ในทำนองเดียวกัน นิพจน์ต่อไปนี้จะจับคู่สระทั้งหมดในสตริงอินพุตที่กำหนด

"([^aeiouAEIOU0-9\\W]+)";

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

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

คลาสสาธารณะ RemovingVowels { โมฆะสาธารณะหลัก ( สตริง args [] ) { อินพุตสตริง ="สวัสดี ยินดีต้อนรับสู่ tutorialspoint"; สตริง regex ="[aeiouAEIOU]"; ผลลัพธ์สตริง =input.replaceAll(regex, ""); System.out.println("ผลลัพธ์:"+ผลลัพธ์); }}

ผลลัพธ์

ผลลัพธ์:H wlcm t ttrlspnt

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

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

ผลลัพธ์

ป้อนสตริงอินพุต:นี่คือตัวอย่างสตริง textInput:นี่คือตัวอย่าง textResult:ths s smpl txtiaaee