Java - String replace() 方法



Java String replace() 方法用于替换字符串对象中单个字符或子字符串为给定值。

此方法在当前字符串中搜索给定的字符(或子字符串),将所有出现的字符替换为给定的值,并返回结果字符串。此替换从字符串的开头到结尾执行。替换意味着提供合适的替代方案、等价物或将其恢复到原始状态。

此方法有两个多态变体。下面显示了这两个变体的语法。此方法的字符变体将字符串中旧字符的每个实例替换为新字符。类似地,字符序列变体替换给定的子字符串。

例如,在字符串“ccc”中将“cc”替换为“b”将得到“bc”而不是“cb”。

语法

以下是Java String replace()方法的语法:

public String replace(CharSequence target, CharSequence replacement)
or,
public String replace(char oldChar, char newChar) 

参数

  • target - 要替换的 char 值序列。 // 第一个语法

  • replacement - 替换的 char 值序列。 // 第一个语法

  • oldChar - 旧字符。 // 第二个语法

  • newChar - 新字符。 // 第二个语法

返回值

  • public String replace(CharSequence target, CharSequence replacement) 方法返回结果字符串。 // 第一个语法

  • public String replace(char oldChar, char newChar) 方法返回一个从该字符串派生的字符串,方法是用 newChar 替换 oldChar 的每次出现。 // 第二个语法

使用 CharSequence 在 String 中替换 CharSequence 的示例

在下面给出的示例中,初始化了一个 String 对象“str”。然后,初始化两个 charSequence,其中上面创建的字符串中的第一个 charSequence 被第二个 charSequence 替换:

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String str = "Tutorialspoint";
      System.out.println("string = " + str); 
      CharSequence s1 = "rialspoint";
      CharSequence s2 = "rix";      
      
      // replace sequence s1 with s2
      String replaceStr = str.replace(s1, s2); 
      
      // prints the string after replacement
      System.out.println("new string = " + replaceStr);
   }
}

输出

如果编译并运行上述程序,它将产生以下结果:

string = Tutorialspoint
new string = Tutorix

使用 CharSequence 替换 CharSequence 的示例

以下示例演示了 Java String replace() 方法的使用,通过该方法,将旧字符序列“how”的所有出现替换为新字符序列“why”:

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String str = "Hello how are how you";
      System.out.println("string = " + str); 
      CharSequence s1 = "how";
      CharSequence s2 = "why";      
      
      // replace sequence s1 with s2
      String replaceStr = str.replace(s1, s2); 
      
      // prints the string after replacement
      System.out.println("new string = " + replaceStr);
   }
}

输出

如果编译并运行上面的程序,输出将显示如下:

string = Hello how are how you
new string = Hello why are why you

使用 String 替换 String 的示例

在下面给出的代码中,使用 replace() 方法将字符 't' 的所有出现替换为新字符 'f':

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String str = new String("Welcome to tutorials point training");
      System.out.println("The given string is: " + str);
      String newString = new String();
      newString = str.replace('t', 'f');
      System.out.println("The new string now is: " + newString);
   }
}

输出

执行上述程序后,输出如下:

The given string is: Welcome to tutorials point training
The new string now is: Welcome fo fuforials poinf fraining

使用 String 替换 String 的示例

在下面给出的代码中,使用 replace() 方法将字符串 'time' 的所有出现替换为新字符串 'day':

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String str = new String("Next time there won't be a next time.");
      System.out.println("The string is: " + str);
      
      // Replacing the old string with new string
      String newString = new String();
      newString = str.replace("time", "day");
      System.out.println("The replaced string is: " + newString);
   }
}

输出

上述程序的输出如下:

The string is: Next time there won't be a next time.
The replaced string is: Next day there won't be a next day.

检查替换空字符串时的异常示例

当替换或目标为 null 时,replace() 方法将抛出 NullPointerException。以下示例支持这一点:

public class StringDemo {
   public static void main(String argvs[]) {
      String s = "Next time there won't be a next time.";
      int size = s.length();
      System.out.println("The string is: " + s);
      String newString = null;
      s = s.replace(newString, "time ");
      System.out.println("The replaced string is: " + s);
   }
}

NullPointerException

执行上述代码时,我们得到以下输出

The string is: Next time there won't be a next time.
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.lang.CharSequence.toString()" because "target" is null
      at java.base/java.lang.String.replace(String.java:2954)
      at StringDemo.main(StringDemo.java:7)
java_lang_string.htm
广告