วิธีการดึงข้อมูลที่เลือกโดยใช้ Regex
ใน C#
เมื่อทำงานกับสตริงใน C# คุณอาจพบสถานการณ์ที่คุณต้องการดึงข้อมูลเฉพาะตามรูปแบบปัจจุบัน ปัญหาที่พบได้บ่อยคือการแปลฟังก์ชัน regex จากภาษาเช่น Perl มายัง C# โดยโพสต์บล็อกนี้จะมุ่งเน้นไปที่วิธีการดึงข้อมูลที่เลือกโดยใช้ Regex
ใน C# โดยให้คุณมีวิธีแก้ปัญหาที่เรียบง่ายและชัดเจน
ทำความเข้าใจกับปัญหา
สมมติว่าคุณมีสตริงที่มีรูปแบบที่คุณต้องการดึงข้อมูล เช่น หากคุณมีสตริงที่ดูเหมือน “ดัชนี: 25” และคุณต้องการดึงหมายเลข “25” เป็นจำนวนเต็ม คุณอาจใช้ regex เพื่อค้นหารูปแบบนี้ ใน Perl คุณสามารถทำได้โดยใช้โค้ดต่อไปนี้:
$indexVal = 0;
if($string =~ /Index: (\d*)/){$indexVal = $1;}
ในตัวอย่างนี้ รูปแบบ regex /Index: (\d*)/
จะค้นหายูบสตริงย่อย “Index: " ตามด้วยตัวเลข โดยการจับตัวเลขเพื่อใช้ในภายหลัง อย่างไรก็ตามเราจะทำฟังก์ชันเดียวกันนี้ใน C# ได้อย่างไร?
วิธีการใน C#
ตอนนี้เรามาแบ่งวิธีการใช้งานฟังก์ชันเดียวกันใน C# กัน โดยขั้นตอนต่อไปนี้จะอธิบายการเขียนโค้ดที่เท่ากับใน C# ที่จะดึงหมายเลขหลังจาก “Index: "
ขั้นตอนที่ 1: นำเข้าส่วนที่จำเป็น
ก่อนอื่นให้แน่ใจว่าคุณได้นำเข้าชื่อสเปซ System.Text.RegularExpressions
ซึ่งให้คลาส Regex
ที่คุณต้องการสำหรับการทำงานกับ regex
using System.Text.RegularExpressions;
ขั้นตอนที่ 2: กำหนดรูปแบบ Regex ของคุณ
สร้างอ็อบเจ็กต์ Regex
ด้วยรูปแบบเดียวกับที่คุณใช้ใน Perl:
Regex re = new Regex(@"Index: (\d*)");
ขั้นตอนที่ 3: ตรวจสอบรูปแบบกับสตริงของคุณ
ถัดไปคุณจะต้องเปรียบเทียบ regex กับสตริงที่ใส่เข้ามาของคุณ:
Match m = re.Match(s); // 's' คือสตริงที่เป็นข้อมูลนำเข้า
ขั้นตอนที่ 4: ดึงค่าที่ตรงกัน
ตอนนี้คุณสามารถตรวจสอบได้ว่ามีการพบแมทช์หรือไม่และดึงกลุ่มที่จับได้ คล้ายกับที่คุณทำใน Perl:
int indexVal = 0; // ค่าดีฟอลต์
if(m.Success)
{
// กลุ่มที่จับได้อยู่ที่ดัชนี 1
int.TryParse(m.Groups[1].Value, out indexVal); // พารามิเตอร์ out เพื่อความปลอดภัย
}
ตัวอย่างโค้ด C# ที่สมบูรณ์
นี่คือวิธีที่โค้ดทั้งหมดอาจดูในบริบทของ C#:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string s = "Index: 25"; // สตริงตัวอย่างที่เป็นข้อมูลนำเข้า
int indexVal = 0;
Regex re = new Regex(@"Index: (\d*)");
Match m = re.Match(s);
if(m.Success)
{
int.TryParse(m.Groups[1].Value, out indexVal);
}
Console.WriteLine("ค่าที่ดึงออกมาจากดัชนี: " + indexVal);
}
}
สรุป
การดึงข้อมูลที่เลือกโดยใช้ Regex
ใน C# เป็นสิ่งที่ชัดเจนเมื่อคุณเข้าใจการแปลงจากภาษาโปรแกรมอื่นเช่น Perl โดยการทำตามขั้นตอนที่กล่าวถึงข้างต้น คุณสามารถดึงข้อมูลที่ต้องการจากสตริงโดยใช้รูปแบบ regex อย่างมั่นใจได้
ข้อคิดหลัก
- การทำความเข้าใจรูปแบบ regex มีความสำคัญต่อการดึงข้อมูลใน C# อย่างมีประสิทธิภาพ เมื่อคุณเชี่ยวชาญมัน คุณจะพบฟังก์ชันการทำงานที่คล้ายกันในหลายภาษาโปรแกรม
คุณสามารถทดลองกับรูปแบบต่างๆ และสำรวจความสามารถของคลาส Regex
ใน C# ได้เลย ขอให้สนุกกับการเขียนโค้ด!