การค้นหาและแทนที่ข้อความ

Java:
การค้นหาและแทนที่ข้อความ

วิธีการ:

การค้นหาและแทนที่ใน Java ทำได้ง่ายด้วยคลาส String และเมธอด replace() นี่คือวิธีการทำ:

public class ReplaceDemo {
    public static void main(String[] args) {
        String originalText = "The quick brown fox jumps over the lazy dog";
        String modifiedText = originalText.replace("lazy", "energetic");
        
        System.out.println("ก่อน: " + originalText);
        System.out.println("หลัง: " + modifiedText);
    }
}

ผลลัพธ์:

ก่อน: The quick brown fox jumps over the lazy dog
หลัง: The quick brown fox jumps over the energetic dog

ตอนนี้, สำหรับรูปแบบหรือการแทนที่ที่มากกว่านั้น, Pattern และ Matcher มาเข้าร่วม:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexReplaceDemo {
    public static void main(String[] args) {
        String originalText = "There are 31,536,000 seconds in 365 days.";
        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(originalText);
        String modifiedText = matcher.replaceAll("#");
        
        System.out.println("ก่อน: " + originalText);
        System.out.println("หลัง: " + modifiedText);        
    }
}

ผลลัพธ์:

ก่อน: There are 31,536,000 seconds in 365 days.
หลัง: There are # seconds in # days.

ลงลึก:

เมธอด replace() ติดตามต้นกำเนิดมาจากวันแรกๆ ของ Java มันเป็นส่วนหนึ่งของคลาส String ที่ไม่สามารถเปลี่ยนแปลงได้, หมายความว่าทุกครั้งที่คุณใช้มัน, คุณกำลังสร้างสตริงใหม่ มีความเป็นมิตรต่อสิ่งแวดล้อมอย่างมาก, ไม่มีการสิ้นเปลืองสิ่งเก่า

แต่ Pattern และ Matcher มันคืออะไร, คุณถาม? คลาสเหล่านี้เป็นส่วนหนึ่งของ API สำหรับ regular expression (regex) ของ Java, ที่แนะนำใน Java 1.4 พวกมันเพิ่มความสามารถให้การค้นหาและการแทนที่, ช่วยให้คุณตรวจจับรูปแบบที่ซับซ้อนและแก้ไขข้อความได้แบบไดนามิก เหมือนกับการใช้มีดผ่าตัดแทนค้อนใหญ่

นอกจากนี้, ยังมี replaceAll() และ replaceFirst(), สองเมธอดของคลาส Matcher ที่ปรับแต่งการเปลี่ยนแปลงข้อความของคุณ, แทนที่ทุกครั้งหรือเฉพาะครั้งแรกที่ตรงกัน

ตัวเลือกอื่นคือการใช้คลาส StringBuffer หรือ StringBuilder เมื่อคุณกำลังจัดการกับการแก้ไขจำนวนมาก เพราะไม่เหมือน String, บัฟเฟอร์เหล่านี้สามารถเปลี่ยนแปลงได้

ดูเพิ่มเติมที่:

สำหรับการฝึกฝนมือถือมากขึ้น, ลองดูที่ RegexOne (https://regexone.com), เป็นแหล่งที่ยอดเยี่ยมในการพัฒนาทักษะ regex ของคุณ