2010-09-02 159 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

相关问题