Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用正则表达式或其他方法去除不需要的数据_C#_Regex_Wpf_Replace - Fatal编程技术网

C#使用正则表达式或其他方法去除不需要的数据

C#使用正则表达式或其他方法去除不需要的数据,c#,regex,wpf,replace,C#,Regex,Wpf,Replace,所以我试图从字符串中删除数据,因为我在WPF中有一个“预设”输入,看起来像\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,现在用户必须输入类似30589,但当用户只输入5或50,它需要删除其余部分(保留,)以适当地使输入值浮动。我现在拥有的代码如下所示 if (inp_km.Text == "__,___") { team_results.results[inp_tour_part.SelectedIndex].km = float.Parse("00,

所以我试图从字符串中删除数据,因为我在WPF中有一个“预设”输入,看起来像
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,现在用户必须输入类似
30589
,但当用户只输入
5
50
,它需要删除其余部分(保留
)以适当地使输入值浮动。我现在拥有的代码如下所示

if (inp_km.Text == "__,___")
{
    team_results.results[inp_tour_part.SelectedIndex].km = 
        float.Parse("00,000", 
                    NumberStyles.AllowDecimalPoint, 
                    CultureInfo.GetCultureInfo("nl-NL")); // Give the new value
}
else
{
    team_results.results[inp_tour_part.SelectedIndex].km = 
        float.Parse(inp_km.Text, 
                    NumberStyles.AllowDecimalPoint, 
                    CultureInfo.GetCultureInfo("nl-NL")); // Give the new value
}
但这段代码只是检查输入是否为空。。。有人能帮我吗

编辑

所以我包括了一个屏幕,这是用户得到的输入布局

你可以看到,输入是“预填充”的,这样的输入的内容是一个“字符串”,所以,比方说,我只在第一个输入中输入5

然后值(通过
输入\u name.Text
)在C中检索)是
5:\uuu
,但这是一个“错误”的值,您不能填写这些内容,我如何检查输入中是否仍然存在


此外,底部输入是相同的,但需要完全填写。

因此,您需要检查输入是否为以下两种形式之一:
12345
12:34

这可以使用
Regex
非常容易地完成

static void Main(string[] args)
{
    var inputComma = "12,345";
    var inputColon = "98:76";
    Regex regexComma = new Regex(@"^\d{2},\d{3}$");
    Regex regexColon = new Regex(@"^\d{2}:\d{2}$");

    var matchComma = regexComma.Match(inputComma);
    if (matchComma.Success)
    {                
        Console.WriteLine(inputComma);
    }

    Console.WriteLine();

    var matchColon = regexColon.Match(inputColon);
    if (matchColon.Success)
    {
        Console.WriteLine(inputColon);
    }

    Console.ReadLine();
}
注: 您还没有完全澄清输入的有效格式。对于
12345
格式,如果存在逗号(即,两位数字后跟一个逗号,后跟三位数字),上述将严格评估为真;对于冒号,仅限格式
12:34
(冒号前后两位数字)的数字


您可能希望根据您的确切标准修改您的
Regex

如果您可以提供一个(控制台应用程序),其中至少包含6个示例输入和每个示例输入的预期结果,那将是非常棒的。您是否使用该预设?而不是使用该SO链接进行预设(掩码)。但我很难从输入中“过滤”出东西。我也有时间(HH:II),它有:作为掩码,但是当我得到输入时,只要填写
5
,它就会返回
5:\uuuu
,我正在使用
Extended.Wpf.Toolkit
()你能详细说明你到底想做什么吗?我完全不理解这一部分:但当用户只给出5或50时,它需要去掉其余部分(保留,)以适当地使输入值浮动。我不理解默认值设置部分。为什么不直接将其设置为
0,0
?为什么要解析硬编码字符串以获得浮点值?它在这里检查正则表达式,但总是返回冒号
00:00
和逗号
00000
如果我尝试你给我的程序,它工作得很好,这就是我正在使用的代码;很抱歉,我无法为您调试整个代码。在执行
Regex
之前,只需使用调试器查看
inp\u stop\u kp.Text的值即可。如我的示例所示,如果值的格式符合预期,它应该会成功。它返回00:00
inp\u stop\u kp.Text
,这在调用
inp\u stop\u kp\u KeyDown()
事件的
LoadResults()
中非常奇怪,而后者又调用
LoadDataInInputs()
,在那里我可以看到一些值被分配给
inp\u stop\u kp.Text
。很可能这就是重置值的地方。