Java - String replaceFirst() 方法



Java String replaceFirst() 方法用于将 String 对象中特定模式的第一次出现替换为给定值。

此方法接受正则表达式和替换字符串作为参数,搜索当前字符串中与指定正则表达式匹配的模式,并将第一次匹配项替换为给定的替换字符串。匹配子字符串的过程从索引 0 开始,这意味着字符串的开头。

在 Java 中,字符串是内部支持字符数组的对象。字符串是一种特殊的数组,它保存字符,由于数组是不可变的,因此字符串也是不可变的。

注意 − 请注意,如果替换字符串包含美元符号 ($) 或反斜杠 (\),结果可能与将其作为文字替换字符串处理的结果不同。

语法

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

public String replaceFirst(String regex, String replacement)

参数

  • regex − 这是要与此字符串匹配的正则表达式。

  • replacement − 这是要替换每个匹配项的字符串。

返回值

此方法返回结果字符串。

使用正则表达式示例替换字符串的第一次出现

以下示例演示了使用正则表达式 '!!' 作为替换子字符串的 Java String replaceFirst() 方法的使用:

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String str1 = "!!Tutorials!!Point", str2;
      String substr = "**", regex = "!!";    
      
      // prints string1
      System.out.println("String = " + str1);    
      
      /* replaces the first substring of this string that matches the given
      regular expression with the given replacement */
      str2 = str1.replaceFirst(regex,substr);    
      System.out.println("After Replacing = " + str2);
   }
}

输出

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

String = !!Tutorials!!Point
After Replacing = **Tutorials!!Point

使用正则表达式示例替换字符串的第一次出现

在下面的代码中,我们使用了 replaceFirst() 方法将字符串 '.' 替换为与正则表达式 \d 匹配的第一个子字符串:

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String s = "Akash 2786 G";
      String s1 = s.replaceFirst("\\d+", ".");
      System.out.println("The new string is: " + s1);
   }
}

输出

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

The new string is: Akash . G

使用正则表达式示例替换特殊字符

正则表达式或普通字符串可以用作 replaceFirst() 方法的第一个参数。原因是普通字符串本身就是一个正则表达式。

正则表达式中有一些字符具有特定含义。这些被称为元字符。如果需要匹配包含这些元字符的子字符串,可以使用“\”转义这些字符。

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String s = "h^k**dg^^kl*^";
      
      // replacing the first "^ with "%"
      String s1 = s.replaceFirst("\\^", "%");
      System.out.println("The replaced string now is: " + s1);
   }
}

输出

运行上述程序后,输出结果如下:

The replaced string now is: h%k**dg^^kl*^

匹配字符串时出现异常示例

方法参数不允许为 null。NullPointerException 将如下例所示被抛出:

public class StringDemo {
   public static void main(String[] args) {
      String s = "Next time there won't be a next time after a certain time";
      String s1 = s.replaceFirst("Next", null);
      System.out.println("The new string is: " + s1);
   }
}

NullPointerException

上述程序的输出如下:

Exception in thread "main" java.lang.NullPointerException: replacement
      at java.base/java.util.regex.Matcher.replaceFirst(Matcher.java:1402)
      at java.base/java.lang.String.replaceFirst(String.java:2894)
      at StringDemo.main(StringDemo.java:4)
java_lang_string.htm
广告