Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menggantikan Berbilang Substring dengan Cekap dalam Rentetan Java?

Bagaimanakah Saya Boleh Menggantikan Berbilang Substring dengan Cekap dalam Rentetan Java?

Linda Hamilton
Linda Hamiltonasal
2024-11-05 06:42:021005semak imbas

How Can I Efficiently Replace Multiple Substrings in a Java String?

Menggantikan Berbilang Subrentetan dalam Rentetan dengan Cekap dalam Java

Apabila berhadapan dengan keperluan untuk menggantikan berbilang subrentetan dalam rentetan, ia menggoda untuk menggunakan pendekatan kekerasan berulang kali menggunakan kaedah string.replace(). Walau bagaimanapun, ini boleh menjadi tidak cekap untuk rentetan besar atau apabila bekerja dengan banyak rentetan.

Mengeksploitasi Ungkapan Biasa

Penyelesaian yang lebih cekap melibatkan memanfaatkan ungkapan biasa. Ungkapan biasa membolehkan anda menentukan corak carian yang kompleks dan melakukan transformasi teks dalam satu operasi.

Contoh Penggunaan

Pertimbangkan senario di mana anda ingin menggantikan token seperti " �t%" dan "�purata%" dengan nilai yang disimpan dalam peta. Menggunakan StringUtils daripada Apache Commons Lang, anda boleh mencipta corak dan pemadan seperti berikut:

<code class="java">Map<String,String> tokens = new HashMap<>();
tokens.put("cat", "Garfield");
tokens.put("beverage", "coffee");

String template = "%cat% really needs some %beverage%.";

// Create pattern of the format "%(cat|beverage)%"
String patternString = "%(" + StringUtils.join(tokens.keySet(), "|") + ")%";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(template);</code>

Seterusnya, anda boleh menggunakan pemadan untuk mencari semua kejadian token dan menggantikannya dengan nilai yang sepadan:

<code class="java">StringBuffer sb = new StringBuffer();
while(matcher.find()) {
    matcher.appendReplacement(sb, tokens.get(matcher.group(1)));
}
matcher.appendTail(sb);

System.out.println(sb.toString());</code>

Faedah Ungkapan Biasa

Setelah ungkapan biasa disusun, mencari rentetan input biasanya sangat pantas. Selain itu, ungkapan biasa memberikan fleksibiliti untuk mengendalikan corak carian yang kompleks, seperti yang melibatkan kurungan dan pengkuantiti.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan Berbilang Substring dengan Cekap dalam Rentetan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn