在.NET中,我需要将十进制数量(money)转换为仅数字字符串,即: 123,456.78 - > 12345678
我想
var dotPos = amount.ToString().LastIndexOf('.');
var amountString = amount.ToString().Remove(dotPos);
会解决我的问题,或至少部分问题,但它没有像我预期的那样工作。 我试图这样做可能没有编写大量代码并使用已经设计用于类似目的的东西。
答案 0 :(得分:19)
你可以这样做:
var amountString = string.Join("", amount.Where(char.IsDigit));
使用char.IsDigit
方法可以保护您免受$
等其他未知符号的攻击,也可以使用其他货币格式。最重要的是,您不知道完全该字符串总是这样,所以这样更安全。
答案 1 :(得分:6)
你说这是一个金额,所以我希望小数点后2位数。怎么样:
var amountstring = (amount * 100).ToString();
获得没有分隔符的美分值?
或者甚至可能
var amountString = ((int)(amount * 100)).ToString();
确保没有小数。
答案 2 :(得分:2)
你不需要强制转换,你不需要知道小数的位置,而你当然不需要Linq。这实际上是正则表达式的教科书案例:
Regex regx = new Regex("[^0-9]");
var amountString = regx.Replace(amount, "");
不可能更简单。你可以用其他奇怪的货币字符传递它的字符串,或任何字符,所有你将得到的是十进制字符串。
答案 3 :(得分:1)
var amountString = amount.ToString().Replace(".","").Replace(",","");
答案 4 :(得分:0)
var amount = 123456.78;
var amountString = amount.ToString().Replace(",", "").Replace(".","");
答案 5 :(得分:0)
我想说这可以帮到你:var res = amount.ToString().Replace(".", "").Replace(",", "");
:)
答案 6 :(得分:0)
var amountString = amount.ToString().Replace(",",string.Empty).Replace(".",string.Empty);
这将替换所有“,”逗号和“。”金额的十进制。
答案 7 :(得分:-1)