c# - c# 将带逗号的字符串转换为数字
问题描述
所以我有这个输入:3,000,000
这个函数返回30000M
:
public static decimal? CustomParse(string incomingValue)
{
decimal val;
if (!decimal.TryParse(incomingValue.Replace(",", "").Replace(".", ""), NumberStyles.Number, CultureInfo.InvariantCulture, out val))
return null;
return val / 100;
}
将这种输入转换为的最佳方法是什么numbber
?
编辑
我也试试这个::
Regex regex = new Regex(@"\d+");
输出是3
解决方案
你也可以这样做
return Decimal.Parse(incomingValue, new CultureInfo("en-US"));
在 en-US '.' 是逗号分隔符。所以它会正确解析文本。
如果文化设置为“de-DE”3 将是转换的预期结果为“,”是逗号分隔符。
但是,您的正则表达式总是会给您 3,因为它只匹配[0-9]+
正则表达式,而不关心您的文化设置。如果你想要一个正则表达式来匹配你的号码,你必须使用类似的东西
Regex regex = new Regex(@"\d+(,\d+)*");
这将匹配“123”和“123,123”,但不匹配“123”或“123”。(在女巫的情况下,它只会匹配 123 部分)。
推荐阅读
- amazon-web-services - 小写 Redshift 列名
- ruby-on-rails - 显示给定 Rails DB 中的文件内容
- kubernetes-helm - 在 configmap 更改时触发 pod 重启
- java - Swing JTable 行边框在应用 Nimbus LookAndFeel 后消失
- node.js - 检查我的 Nodejs 服务器是否正在远程运行
- r - 在 Microsoft R Open (MRO) 3.5.3 上安装 Teradatasql
- python-3.x - Parquet 数据到 AWS Redshift 速度很慢
- runtime - Smalltalks 运行时状态
- caching - Redis vs memcached vs Scylla Cache - 选择哪一个?
- javascript - ajax 请求后重新加载脚本 (Poptrox)