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

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


คลาสอักขระอย่างง่าย “[ ] ” ตรงกับอักขระที่ระบุทั้งหมดในนั้น อักขระเมตา ^ ทำหน้าที่เป็นการปฏิเสธภายในคลาสอักขระข้างต้น กล่าวคือ นิพจน์ต่อไปนี้ตรงกับอักขระทั้งหมด ยกเว้น b (รวมถึงช่องว่างและอักขระพิเศษ)

"[^b]"

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

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

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

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

คลาสสาธารณะ RemovingConstants { โมฆะสาธารณะหลัก ( สตริง args [] ) { อินพุตสตริง ="สวัสดี ยินดีต้อนรับ # ome ถึง t$utori$alspoint"; สตริง regex ="([^aeiouAEIOU0-9\\W]+)"; ผลลัพธ์สตริง =input.replaceAll(regex, ""); System.out.println("ผลลัพธ์:"+ผลลัพธ์); }}

ผลลัพธ์

ผลลัพธ์:i e#oe o $uoi$aoi

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

<ก่อน> นำเข้า java.util.Scanner; นำเข้า java.util.regex.Matcher; นำเข้า java.util.regex.Pattern; คลาสสาธารณะ RemovingConsonants { โมฆะสาธารณะหลัก (สตริง args [] ) { Scanner sc =สแกนเนอร์ใหม่ (ระบบ .ใน); System.out.println("ป้อนสตริงอินพุต:"); อินพุตสตริง =sc.nextLine(); สตริง regex ="([^aeiouyAEIOUY0-9\\W])"; ค่าคงที่สตริง =""; //การสร้างวัตถุรูปแบบ 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() ); }}

ผลลัพธ์

ป้อนสตริงอินพุต:# สวัสดี คุณยินดีต้อนรับสู่ Tutorialspoint อย่างไร #ผลลัพธ์:# eo o ae คุณ eoe o uoiaoi #