在日常工作开发过程中,经常会遇到需要替换指定字符串的情况,那么关于Java 替换字符串的几种方法,这里来详细说说。
replace
replace 方法有两个重载版本:
public String replace(char oldChar, char newChar)
这个方法将字符串中的所有旧字符 oldChar 替换为新字符 newChar。
public String replace(CharSequence target, CharSequence replacement)
这个方法将字符串中所有与 target 相等的子字符串替换为 replacement。
这个方法不支持正则表达式,它进行的是简单的直接替换。示例代码
public static void main(String[] args) { String original = "Hello World! This is a test string."; // 使用 replace 方法替换字符 'l' 为 'L' String replaced = original.replace('l', 'L'); System.out.println(replaced); // 使用 replace 方法替换子字符串 "test" 为 "TEST" replaced = original.replace("test", "TEST"); System.out.println(replaced); }
执行结果如图
replaceAll
replaceAll 方法如下:
public String replaceAll(String regex, String replacement)
这个方法使用正则表达式 regex 来识别要替换的部分,并将其替换为 replacement。
replaceAll 支持正则表达式,这意味着你可以用更复杂的方式来定义要被替换的内容,例如匹配特定模式的文本,而不仅仅是固定的字符串。示例代码
public static void main(String[] args) { // 使用 replaceAll 方法替换所有数字为 "#" String withRegex = "Hello 123 World!"; String replaced = withRegex.replaceAll("\\d", "#"); System.out.println(replaced); }
执行结果如图
replaceFirst
replaceFirst 方法如下:
public String replaceFirst(String regex, String replacement)
这个方法类似于 replaceAll(), 但它只替换第一个匹配的模式,示例代码
public static void main(String[] args) { // 使用 replaceAll 方法替换所有数字为 "#" String withRegex = "Hello 123 World!"; String replaced = withRegex.replaceFirst("\\d", "#"); System.out.println(replaced); }
执行结果如图
StringBuffer 或 StringBuilder 的 replace()
StringBuffer 或 StringBuilder 的 replace() 方法 这些类提供了 replace(int start, int end, String str) 方法,可以在指定位置替换字符串的一部分,但通常这不是用于全局替换的首选方法,因为这涉及到创建一个新的 StringBuffer 或 StringBuilder 对象,示例代码
public static void main(String[] args) { StringBuffer buffer = new StringBuffer("Hello World!"); buffer.replace(6, 11, "Java"); System.out.println(buffer.toString()); }
执行结果如图
第三方库
常用的第三方库,比如 hutool,第三方库提供了额外的字符串操作功能,可能更适合某些特定需求,示例代码
public static void main(String[] args) { String original = "Hello World!"; String replaced = StrUtil.replace(original, "World", "Java"); System.out.println(replaced); }
执行结果如图
关于 Java 替换字符串的方法常用的主要就是这些, 一些特殊的场景如果常用的无法实现,则需要通过第三方库实现了。