2010-09-02 157 views

回答

74

這應該工作:

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

可能想保留任何跡象:' 「[^ 0-9 + - ]」' – BillP3rd 2010-09-02 06:50:34

+0

@ BillP3rd - 但想刪除alphabates和字符串是與成員單位。你真的認爲它是必需的嗎? – 2010-09-02 06:52:47

+0

感謝Pranay的解決方案。 BillP3rd,目前我不需要+號 - 但是感謝更新,未來我可能會保留這些跡象。 – 2010-09-02 06:59:03

15

你應該能夠解決這個使用正則表達式。以下引用添加到您的項目:

using System.Text.RegularExpressions; 

後,您可以使用下列內容:

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

假設你只有字母和空間單位。從谷歌的番石榴庫

0

使用CharMatcher API:

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

做靜態導入CharMatcher.inRange(..)。您可以修剪尾部空白的結果。

+2

真的不會推薦外部依賴的東西,由c#/ BCL支持 – 2017-11-02 12:31:40

2

使用LINQ:

using System.Linq; 

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

這只是一件小事:這個解決方案消除了對System.Text.RegularExpressions的依賴 - 這是我目前正在使用的應用程序中不常用的。 – condiosluzverde 2018-01-03 23:18:43

相關問題