ลบเครื่องหมายวรรคตอนออกจากสตริงใน Java

ในระหว่างการประมวลผลข้อความ ไม่ว่าคุณจะค้นหาคำบางคำและสร้างกฎการจับคู่รูปแบบ การนับความถี่ขององค์ประกอบ ฯลฯ เครื่องหมายวรรคตอนอาจทำให้แผนของคุณยุ่งยาก

บ่อยครั้ง คุณจะต้องลบคำหยุด เครื่องหมายวรรคตอน ตัวเลข หรืออย่างอื่น บาง ประเภทของตัวละคร ขึ้นอยู่กับเป้าหมายสุดท้ายของคุณ

ในบทช่วยสอนสั้นๆ นี้ เราจะมาดูวิธีลบเครื่องหมายวรรคตอนออกจากสตริงใน 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 ห่วง

ประทับเวลา:

เพิ่มเติมจาก สแต็ค