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!