“嗨,阿米戈!”

“据我所知,Rishi 已经给你讲过正则表达式了。”

“是的,这很有趣。”

“太好了,现在我将告诉你如何使用正则表达式来处理字符串。”

“让我们从最简单的问题开始:”

1) 如何检查字符串是否与正则表达式指定的模式相匹配?

“为此有一个匹配方法。您传递一个包含正则表达式的字符串,该方法返回 true 或 false。”

方法) 例子)
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
结果:

false (the String doesn't start with "news")

2) 如何用不同的字符串替换所有匹配的子字符串?

“这有两种方法。”

replaceAll方法用另一个字符串替换所有出现的子字符串。”

replaceFirst方法用指定的字符串替换传递的子字符串的第一次出现。”

方法) 例子)
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("e\\.","EX");
结果:

s2 == "Good nEXs EXEXyonEX";
String replaceFirst(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceFirst("e\\.","EX");
结果:

s2 == "Good nEXs, everyone!";

3) 如何将字符串拆分成多个部分?

“为此,我们有 split 方法,它采用定界掩码:”

方法) 例子)
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
结果(三个字符串的数组):

[Good , ws everyo, !]
"Good ", "ws everyo", "!";

StringTokenizer类是另一种将字符串拆分为多个部分的方法。”

“这个类不使用正则表达式。相反,您只需传入一个包含一组分隔符的字符串。这种方法的优点是它不会立即将整个字符串分成几部分,而是慢慢地从从头到尾。”

“该类由一个构造函数和两个方法组成。您需要将我们要拆分的字符串以及包含一组定界字符的字符串传递给构造函数。”

nextToken 方法返回下一个标记(子字符串)。

如果仍有子字符串尚未返回,则 hasMoreTokens() 方法返回 true。

方法) 例子)
boolean hasMoreTokens()

String nextToken()
String s = "Good news, everyone!";

StringTokenizer tokenizer =
new StringTokenizer(s,"ne");
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
System.out.println(token);
}
屏幕输出:

Good
ws
v
ryo
!

“请注意,传递给StringTokenizer构造函数的第二个字符串中的任何字符都被视为分隔符。”

“再一次,一切似乎都清楚了。我可能无法立即独自编写这段代码,但我明白这里发生了什么。”

“很好,那我们就假设你已经掌握了这个话题。”