解析为双精度并忽略字母和空格

本文关键字:空格 双精度 | 更新日期: 2023-09-27 18:18:30

我在这里定义了价格:

lblPrisGrill.Text = "20,00 ,-"; // Grill
lblPrisWiener.Text = "25,00 ,-"; // Wiener
lblPrisBacon.Text = "35,00 ,-"; // Bacon
lblPrisOst.Text = "30,00 ,-"; // Oste

我将价格从字符串解析为double (number):

if (rbGrill.Checked == true)
    PrisMeny = double.Parse(lblPrisGrill.Text);
else if (rbWiener.Checked == true)
    PrisMeny = double.Parse(lblPrisWiener.Text);
else if (rbBacon.Checked == true)
    PrisMeny = double.Parse(lblPrisBacon.Text);
else if (rbOst.Checked == true)
    PrisMeny = double.Parse(lblPrisOst.Text);

我想知道为什么我只能得到数字"##,##"而忽略了" ,-"

我知道有资源解释这一点,但我想知道这将是如何,如果我有多个任务,看看它将如何完成。

解析为双精度并忽略字母和空格

您可以简单地使用String.Replace删除该部分:

string s = "20,00 ,-";
double d = double.Parse(s.Replace(",-", ""));
Console.WriteLine(d); // 20.0

您可以使用Regex查找匹配的表达式。我创建了这个。net小提琴来演示您的场景。您可以在现场检查输出。附加代码以供参考。

using System;
using System.Text.RegularExpressions;
public class Program
{
    public static void Main()
    {
        var text = "200,001 ,-"; 
        var regex = new Regex(@"'d'd*,'d'd*");
        foreach(var match in regex.Matches(text))
        {
            Console.WriteLine(match.ToString());
        }
    }
}