2010-06-17 37 views

Trả lời

5

Sử dụng Regex:

str = Regex.Replace(str, @"\D+", ""); 

\D là phần bù của \d - phù hợp với tất cả mọi thứ đó không phải là một chữ số. + sẽ khớp với một hoặc nhiều trong số chúng (nó thường hoạt động tốt hơn một chút).

Sử dụng LINQ (trên Net 4.0):

str = String.Concat(str.Where(Char.IsDigit)); 
-1
string result = System.Text.RegularExpressions.Regex.Replace("text to look for stuff", "pattern", "what to replace it with") 
+0

Umm được chứ? Điều này hữu ích như thế nào? Regex hoạt động như thế nào? Làm thế nào để bạn sử dụng điều này một cách bí ẩn? Và làm thế nào điều này trả lời câu hỏi ở tất cả? – Jonas

+0

Giả định của tôi đơn giản là anh ta không biết cách gọi regex thay thế bằng C# thay vì muốn mã chính xác để làm điều đó. Sau khi đọc các câu trả lời khác, tôi nhận ra câu trả lời của tôi là mong muốn nhưng cảm ơn vì đã chỉ ra rằng tôi đã sai. – Buildstarted

0
string str = "ab123123abc" 
str = Regex.Replace(str, @"[\w]", ""); 

tham chiếu từ http://msdn.microsoft.com/en-us/library/844skk0h.aspx

+0

'[\ w]' là thừa, bạn không cần lớp nhân vật. '\ w' giống hệt nhau. Tuy nhiên, '\ w' bao gồm các chữ cái và chữ số (và dấu gạch dưới), vì vậy bạn kết thúc với các ký tự đặc biệt và dấu cách. – Kobi

0

tôi khá thích sử dụng không ^ như ^\d hoặc ^[0-9]

string resultString = null; 
try { 
    resultString = Regex.Replace(subjectString, @"[^\d]+", ""); 
} catch (ArgumentException ex) { 
    // Syntax error in the regular expression 
} 
+1

Vâng, đó là cơ bản giống nhau, nhưng có lẽ tốt hơn được biết đến. Khối 'try/catch' không cần thiết, ngoại lệ duy nhất có thể là nếu' subjectString' là 'null', bạn nên kiểm tra. Bạn sẽ không nhận được 'ArgumentException' cho mẫu này - nó đúng':) 'Tuy nhiên, đó phải là" '[^ \ d]' hoặc '[^ 0-9]' " – Kobi

Các vấn đề liên quan