Skip to main content
 首页 » 编程设计

c#之为什么我的 100,000 英镑被转换为 100 而不是 100000,这可能是正则表达式的问题

2024年02月27日40Free-Thinker

我有以下代码:

var totalDecimalList = Regex.Split(total, @"[^0-9\.]+").Where(c => c != "." && c.Trim() != ""); 
decimal totalDecimal = decimal.Parse(totalDecimalList.First()); 

通过我的调试 session

totalDecimal = 100 and not 100000 

所以“,”显然是问题的原因,第一行中的正则表达式不正确,即

@"[^0-9\.]+") 

请问我如何更正此正则表达式以解决逗号问题?

谢谢。

请您参考如下方法:

更好的是,让内置的解析函数为您完成工作:

using System; 
using System.Globalization; 
 
namespace StackOverflow_CurrencyParsing 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            string total = "£100,000.00"; 
 
            decimal totalDecimal = decimal.Parse(total, NumberStyles.Currency, CultureInfo.GetCultureInfo("en-gb")); 
 
            Console.WriteLine($"Total: {totalDecimal}"); 
            Console.ReadKey(); 
        } 
    } 
}