C#从字符串中提取数值信息
一般数值中有可能包括+-,.0-9数字,所以使用正则表达式来判断和获取是比较方便的
示例代码:
public static SuccessFailResult<decimal> getDecimalFromString(string pStr) {
string pNumStr = Regex.Replace(pStr, @"[^\d.\-\+,]", ""); //把非数字替换掉
if (Regex.IsMatch(pNumStr, @"^[+-]?[\d,]*[.]?\d*$")) {
decimal pReturn = decimal.Parse(pNumStr);
return SuccessFailResult<decimal>.createSuccess(pReturn);
} else {
return SuccessFailResult<decimal>.createFail(pStr + " is not a legitimate number");
}
}
测试代码:
string pStr = "+1,234.5";//测试数据还有-1,234.5 //abcd34.4 都能正确识别
var pResult = ConvertHelper.getDecimalFromString(pStr);
if (pResult.mResult == EMSuccessFail.resultFail) {
MessageBox.Show(pResult.mInfo);
} else {
MessageBox.Show(pResult.mValue.ToString());
}
//当使用字符串+-123.4时,也能返回不是合法数字的错误信息