2010-09-02 68 views

Trả lời

74

này nên làm việc:

Regex.Replace(s, "[^0-9.]", "") 
+16

lẽ muốn giữ bất kỳ dấu hiệu: ' "[^ 0-9 + -.]"' – BillP3rd

+0

@ BillP3rd - nhưng muốn loại bỏ alphabates và chuỗi là các đơn vị với số. Bạn có thực sự nghĩ rằng nó yêu cầu? –

+0

Cảm ơn Pranay vì giải pháp. BillP3rd, hiện tại tôi không cần dấu +, nhưng cảm ơn cho bản cập nhật, có thể trong tương lai tôi muốn giữ lại các dấu hiệu. –

15

Bạn sẽ có thể giải quyết việc này bằng Regex. Thêm tài liệu tham khảo sau đây để dự án của bạn:

using System.Text.RegularExpressions; 

sau đó bạn có thể sử dụng như sau:

string value = Regex.Replace(<yourString>, "[A-Za-z ]", ""); 
double parsedValue = double.Parse(value); 

Giả sử bạn có ký tự chữ và không gian như đơn vị.

0

Sử dụng CharMatcher API từ thư viện ổi của Google:

String magnitudeWithUnit = "254.69 meter"; String magnitude = CharMatcher.inRange('a', 'z').or(inRange('A', 'Z')).removeFrom(magnitudeWithUnit);

Do CharMatcher.inRange tĩnh-nhập khẩu (..). Bạn có thể cắt các kết quả cho dấu cách.

+2

Thực sự sẽ không đề xuất một phụ thuộc bên ngoài cho một cái gì đó được hỗ trợ bởi C#/BCL –

2

Sử dụng LINQ:

using System.Linq; 

string input ="57.20000 KG "; 
string output = new string(input.Where(c=>(Char.IsDigit(c)||c=='.'||c==',')).ToArray()); 
+0

Nó chỉ là một điều nhỏ: giải pháp này loại bỏ sự phụ thuộc vào System.Text.RegularExpressions - mà không thường được sử dụng trong ứng dụng hiện tại tôi đang làm việc . – condiosluzverde

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