ในระหว่างการประมวลผลข้อความ ไม่ว่าคุณจะค้นหาคำบางคำและสร้างกฎการจับคู่รูปแบบ การนับความถี่ขององค์ประกอบ ฯลฯ เครื่องหมายวรรคตอนอาจทำให้แผนของคุณยุ่งยาก
บ่อยครั้ง คุณจะต้องลบคำหยุด เครื่องหมายวรรคตอน ตัวเลข หรืออย่างอื่น บาง ประเภทของตัวละคร ขึ้นอยู่กับเป้าหมายสุดท้ายของคุณ
ในบทช่วยสอนสั้นๆ นี้ เราจะมาดูวิธีลบเครื่องหมายวรรคตอนออกจากสตริงใน Java
ลบเครื่องหมายวรรคตอนออกจากสตริงด้วย RegEx (นิพจน์ทั่วไป)
นิพจน์ทั่วไปมีความเหมาะสมอย่างเป็นธรรมชาติในที่นี้ ทั้งสองเพราะมีแนวโน้มว่าจะเป็นส่วนหนึ่งของส่วนการประมวลผลอื่นๆ และเนื่องจากเป็นการจับคู่รูปแบบที่มีประสิทธิภาพ! ใน Java นิพจน์ทั่วไปสำหรับการจับคู่เครื่องหมายวรรคตอนคือ p{Punct}
หรืออักษรย่อ p{P}
.
คุณจะต้องหลีกเลี่ยงแบ็กสแลชแรกในสตริง ดังนั้นการลบเครื่องหมายวรรคตอนทั้งหมดจึงเทียบเท่ากับการจับคู่และแทนที่ด้วยอักขระว่าง:
String.replaceAll("p{P}", "")
มาประยุกต์ใช้กับประโยคง่ายๆ กันเถอะ:
String text = "Hi! This is, in effect, a synthetic sentence. It's meant to have several punctuation characters!";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);
ผลลัพธ์นี้ใน:
Hi This is in effect a synthetic sentence Its meant to have several punctuation characters
มาดูกันว่าอักขระใดบ้างที่ถือว่าเป็นเครื่องหมายวรรคตอนที่นี่:
String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);
ด้วยอักขระพิเศษเหล่านี้ - จะเหลืออะไรหลังจากลบเครื่องหมายวรรคตอน?
$+^`|~
ลบเครื่องหมายวรรคตอนออกจากสตริงโดยไม่มี RegEx
หากคุณไม่ต้องการใช้นิพจน์ทั่วไป คุณสามารถตรวจสอบด้วยตนเองในขณะที่วนซ้ำอักขระแต่ละตัวของสตริง อย่าลืมใช้ a StringBuffer
แทน a String
ในขณะที่ทำเช่นนี้ เนื่องจากสตริงจะไม่เปลี่ยนรูปและจำเป็นต้องทำสำเนาทุกครั้งที่คุณต้องการเพิ่มตัวละคร ดังนั้นคุณจะต้องสร้าง string.length
จำนวนสตริงในหน่วยความจำ
StringBuffer
เปลี่ยนแปลงได้ และสามารถแปลงเป็นสตริงที่ไม่เปลี่ยนรูปได้อย่างง่ายดายเมื่อสิ้นสุดกระบวนการ:
ดูคู่มือเชิงปฏิบัติสำหรับการเรียนรู้ Git ที่มีแนวทางปฏิบัติที่ดีที่สุด มาตรฐานที่ยอมรับในอุตสาหกรรม และเอกสารสรุปรวม หยุดคำสั่ง Googling Git และจริงๆ แล้ว เรียน มัน!
public static String removePunctuations(String s) {
StringBuffer buffer = new StringBuffer();
for (Character c : s.toCharArray()) {
if(Character.isLetterOrDigit(c))
buffer.append(c);
}
return buffer.toString();
}
มาสร้างสตริงและทำความสะอาดกัน:
String text = "Hello! nHere are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ nWhere are they? :(n";
System.out.println(text);
String clean = removePunctuations(text);
System.out.println(clean);
Hello!
Here are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~
Where are they? :(
HelloHerearesomespecialcharactersWherearethey
แม้ว่าขั้นตอนนี้จะปรับแต่งได้มากกว่า แต่จะตรวจสอบเฉพาะตัวอักษรและตัวเลขเท่านั้น คุณสามารถตรวจสอบรหัสอักขระได้ด้วยตนเอง และยกเว้นเฉพาะบางเครื่องหมายวรรคตอนแทน – และปล่อยให้เป็นช่องว่าง การขึ้นบรรทัดใหม่ ฯลฯ
สรุป
ในบทช่วยสอนสั้นๆ นี้ เราได้มาดูวิธีที่คุณสามารถลบเครื่องหมายวรรคตอนหรืออักขระพิเศษบางตัวออกจากสตริงใน Java โดยใช้นิพจน์ทั่วไปหรือการตรวจสอบด้วยตนเองในการปรับปรุง for
ห่วง