“สวัสดี อามีโก้!”

"เท่าที่ฉันรู้ Rishi ได้บอกคุณเกี่ยวกับนิพจน์ทั่วไปแล้ว"

"ใช่ มันน่าสนใจมาก"

"เยี่ยมมาก ตอนนี้ฉันจะบอกคุณเกี่ยวกับการใช้นิพจน์ทั่วไปเพื่อทำงานกับสตริง"

"เริ่มจากคำถามที่ง่ายที่สุดกันก่อน:"

1) ฉันจะตรวจสอบได้อย่างไรว่าสตริงตรงกับรูปแบบที่ระบุโดยนิพจน์ทั่วไปหรือไม่

"มีวิธีจับคู่สำหรับสิ่งนี้ คุณส่งสตริงที่มีนิพจน์ทั่วไป และวิธีการส่งกลับค่าจริงหรือเท็จ"

วิธีการ ตัวอย่าง)
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
ผลลัพธ์:

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

2) ฉันจะแทนที่สตริงย่อยที่ตรงกันทั้งหมดด้วยสตริงที่แตกต่างกันได้อย่างไร

"มีสองวิธีสำหรับสิ่งนี้"

" วิธีการ แทนที่ทั้งหมดแทนที่เหตุการณ์ทั้งหมดของสตริงย่อยด้วยสตริงอื่น"

" เมธอดการ แทนที่ครั้งแรกแทนที่การเกิดขึ้นครั้งแรกของสตริงย่อยที่ส่งผ่านด้วยสตริงที่ระบุ"

วิธีการ ตัวอย่าง)
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) ฉันจะแยกสตริงออกเป็นส่วนๆ ได้อย่างไร

"สำหรับสิ่งนี้ เรามีวิธีการแยก ซึ่งใช้มาสก์คั่น:"

วิธีการ ตัวอย่าง)
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เป็นอีกวิธีในการแยกสตริงออกเป็นส่วนๆ "

"คลาสนี้ไม่ใช้นิพจน์ทั่วไป แต่คุณเพียงแค่ส่งสตริงที่มีชุดตัวคั่น ข้อดีของวิธีนี้คือมันไม่ได้แบ่งสตริงทั้งหมดออกเป็นชิ้นๆ ทั้งหมดในคราวเดียว แต่จะค่อยๆ เคลื่อนจาก จุดเริ่มต้นสู่จุดสิ้นสุด"

"คลาสประกอบด้วยตัวสร้างและสองเมธอด คุณต้องผ่าน String ที่เราแยกออกเป็นคอนสตรัคเตอร์ พร้อมด้วยสตริงที่มีชุดของอักขระคั่น"

เมธอด nextToken ส่งคืนโทเค็นถัดไป (สตริงย่อย)

เมธอด hasMoreTokens() คืนค่าจริงหากยังมีสตริงย่อยที่ยังไม่ได้ส่งคืน

วิธีการ ตัวอย่าง)
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จะถือเป็นตัวคั่น"

"อีกครั้ง ทุกอย่างดูเหมือนจะชัดเจน ฉันอาจไม่สามารถเขียนโค้ดนี้ทั้งหมดด้วยตัวเองได้ในทันที แต่ฉันเข้าใจว่าเกิดอะไรขึ้นที่นี่"

"ดีมาก เราจะถือว่าคุณเข้าใจหัวข้อนี้แล้ว"