我在NUnit Framework上使用Selenium(C#),并且从UI中获取的字符串为 $ 4850.19 。 我想将上述字符串与后端(DB)的值进行比较,以断言它们相等。 我正在使用下面的方法从前端解析我的美元金额,但是问题是,这也剥夺了小数点;很明显,与后端的比较失败了。
使用的方法:
public static string RemoveNonNumeric(string s)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
if (Char.IsNumber(s[i]))
sb.Append(s[i]);
return sb.ToString();
}
如何去除任何“ $”或“,”但保留“。”值吗?
答案 0 :(得分:5)
对于Reg ex,这是微不足道的
Regex.Replace(s, "[^0-9.]", "")
答案 1 :(得分:2)
您还可以使用decimal.Parse
方法将格式化为货币的string
解析为decimal
类型:
string input = "$4,850.19";
decimal result = decimal.Parse(input, NumberStyles.Currency);
Console.WriteLine($"{input} => {result}");
输出:
答案 2 :(得分:1)
如果不想走decimal.Parse
路线,另一种方法是只从字符串中返回数字和'.'
字符:
public static string RemoveNonNumeric2(string s)
{
return string.Concat(s?.Where(c => char.IsNumber(c) || c == '.') ?? "");
}
答案 3 :(得分:0)
感谢上面的所有输入,我现在想出了一种简单的方法来处理此问题(如下所示)-
public static string RemoveNonNumeric(string s)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
if (Char.IsNumber(s[i]) || s[i] == '.')
sb.Append(s[i]);
return sb.ToString();
}
我想尽快尝试其他处理方式。