字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
此方法用来测试当前字符串是否匹配给定的正则表达式。 调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:
Pattern.matches(regex, str)
实例:验证正则表达式是否匹配 “Hello World” 文本,代码如下:
public class Demo23 { public static void main(String[] args) { String str = "Hello World"; System.out.println(str.matches("((Hello)\\s(World))")); } }
运行结果如下:
true
根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。
limit 参数控制模式应用的次数,因此影响所得数组的长度。
如果该 limit 大于 0,则模式将被最多应用 limit - 1 次,数组的长度将不会大于 limit,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。
如果 limit 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。
如果 limit 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
调用此方法的 str.split(regex, n) 形式与以下表达式产生的结果完全相同:
Pattern.compile(regex).split(str, n)
注意:只有一个参数的 split(regex) 方法内部实际调用的是 split(regex, 0);
例如:使用正则表达式拆分字符串 "boo:and:foo",代码如下:
import java.util.Arrays; public class Demo24 { public static void main(String[] args) { String str = "boo:and:foo"; System.out.println(Arrays.toString(str.split(":"))); System.out.println(Arrays.toString(str.split("o"))); System.out.println(Arrays.toString(str.split("o", 5))); } }
运行结果如下:
boo, and, foo] [b, , :and:f] [b, , :and:f, , ]
使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
调用此方法的 str.replaceFirst(regex, repl) 形式与以下表达式产生的结果完全相同:
Pattern.compile(regex).matcher(str).replaceFirst(repl)
注意:在替代字符串中使用反斜杠 (\) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅 Matcher 类的 replaceFirst(java.lang.String) 方法。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消这些字符的特殊含义。
实例:
public class Demo25 { public static void main(String[] args) { String str = "boo:and:foo"; // 将第一个字符串 o 替换成 ## System.out.println(str.replaceFirst("o+", "##")); } }
运行结果如下:
b##:and:foo
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
调用此方法的 str.replaceAll(regex, repl) 形式与以下表达式产生的结果完全相同:
Pattern.compile(regex).matcher(str).replaceAll(repl)
注意:在替代字符串中使用反斜杠 (\) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅 Matcher 类的 replaceFirst(java.lang.String) 方法。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消这些字符的特殊含义。
实例:
public class Demo26 { public static void main(String[] args) { String str = "boo:and:foo"; // 将所有的 o 字符替换成 ## String newStr = str.replaceAll("o+", "\\$"); System.out.println("newStr = " + newStr); // quoteReplacement() 方法将转换字符串 // 斜线 ('\') 和美元符号 ('$') 将不具有任何特殊意义 newStr = Matcher.quoteReplacement(newStr); System.out.println("newStr = " + newStr); } }
运行结果如下:
newStr = b$:and:f$ newStr = b\$:and:f\$