Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để tìm và trích xuất một số từ một chuỗi trong C #?

Một biểu thức chính quy là một mẫu có thể được so khớp với văn bản đầu vào. .Net framework cung cấp công cụ biểu thức chính quy cho phép đối sánh như vậy. Mẫu bao gồm một hoặc nhiều ký tự ký tự, toán tử hoặc cấu trúc.

Dưới đây là các siêu ký tự mẫu cơ bản được RegEx sử dụng -

* = zero or more
? = zero or one
^ = not
[] = range

Ký hiệu ^ được sử dụng để chỉ định điều kiện không phải.

dấu ngoặc [] nếu chúng ta cung cấp các giá trị phạm vi như 0 - 9 hoặc a-z hoặc A-Z

Sử dụng Char.IsDigit ()

Ví dụ

using System;
namespace DemoApplication{
   public class Program{
      static void Main(string[] args){
         string str1 = "123string456";
         string str2 = string.Empty;
         int val = 0;
         Console.WriteLine($"String with number: {str1}");
         for (int i = 0; i < str1.Length; i++){
            if (Char.IsDigit(str1[i]))
               str2 += str1[i];
         }
         if (str2.Length > 0)
            val = int.Parse(str2);
            Console.WriteLine($"Extracted Number: {val}");
         Console.ReadLine();
      }
   }
}

Đầu ra

String with number: 123string456
Extracted Number: 123456

Trong ví dụ trên, chúng ta đang lặp lại tất cả các ký tự của chuỗi str1. TheChar.IsDigit () xác thực xem ký tự cụ thể có phải là số hay không và thêm ký tự đó vào một chuỗi mới sau đó được phân tích cú pháp thành một số.

Sử dụng Regex

Ví dụ

using System;
using System.Text.RegularExpressions;
namespace DemoApplication{
   public class Program{
      static void Main(string[] args){
         string str1 = "123string456";
         string str2 = string.Empty;
         int val = 0;
         Console.WriteLine($"String with number: {str1}");
         var matches = Regex.Matches(str1, @"\d+");
         foreach(var match in matches){
            str2 += match;
         }
         val = int.Parse(str2);
         Console.WriteLine($"Extracted Number: {val}");
         Console.ReadLine();
      }
   }
}

Đầu ra

String with number: 123string456
Extracted Number: 123456

Trong ví dụ trên, chúng tôi sử dụng biểu thức chính quy (\ d +) để chỉ trích xuất các số từ chuỗi str1.