วิธีการดึงข้อมูลที่เลือกโดยใช้ 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# ได้เลย ขอให้สนุกกับการเขียนโค้ด!