“嗨,阿米戈!”

“據我所知,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構造函數的第二個字符串中的任何字符都被視為分隔符。”

“再一次,一切似乎都清楚了。我可能無法立即獨自編寫這段代碼,但我明白這裡發生了什麼。”

“很好,那我們就假設你已經掌握了這個話題。”