2009-12-30 35 views

Trả lời

12
Regex.Matches(text, pattern).Count 
4
Regex.Matches(input, @"\d").Count 

Vì đây sẽ bố trí một trường hợp trận đấu cho mỗi trận đấu, điều này có thể là tối ưu hiệu suất phụ-khôn ngoan. Bản năng của tôi sẽ là thực hiện một số việc như sau:

input.Count(Char.IsDigit) 
+1

này sẽ trả lại số ký tự trong một chuỗi. "123 456" sẽ trả về 6, mặc dù chỉ có 2 số. Chính xác sẽ là Regex.Matches (đầu vào, @ "\ d +") Đếm –

+0

Không tệ, nhưng đây là trường hợp cụ thể. Các trận đấu regex khác sẽ không thể được tính mà không có chức năng riêng biệt – JustDaveN

0

Ví dụ về đối sánh MatchCollection được trả về từ cuộc gọi đến phương thức đối sánh trên RegEx sẽ cho bạn biết số lượng kết quả phù hợp. Tuy nhiên, những gì tôi nghi ngờ là nó có thể không được tính là sai, nhưng bạn có thể cần phải cụ thể hơn với biểu thức chính quy của bạn (làm cho nó ít tham lam) để xác định các trường hợp cụ thể của trận đấu bạn muốn.

Điều bạn hiện có nên cung cấp cho bạn tất cả các trường hợp của một số trong một chuỗi, vì vậy bạn có nhận được kết quả mà bạn tin là không chính xác không? Nếu vậy, bạn có thể cung cấp chuỗi và regex không?

+0

xin lỗi, hãy nhấp vào, thay vào đó hãy đăng câu trả lời –

2
 var a = new Regex("[0-9]"); 
     Console.WriteLine(a.Matches("1234").Count); 
     Console.ReadKey(); 
-1
var regex = new Regex(@"\d+"); 
var input = "123 456"; 
Console.WriteLine(regex.Matches(input).Count); // 2 
// we want to count the numbers, not the number of digits 
Các vấn đề liên quan