winforms C#中如何检查文本框中是否有数字和字母X

h6my8fg2  于 2023-06-24  发布在  C#
关注(0)|答案(5)|浏览(146)

我使用C#和WinForms。因此,我试图建立一个POS应用程序,有一个文本框的条形码和命令。其中一个命令是“t”,表示总数。
我想实现另一个命令,该命令后面有一个数字和字母“x”,表示扫描或输入的下一个项目的数量。基本上,我想让它这样,如果你把“2x”到文本框,它设置一个变量为2。对于任何整数,有没有简单的方法。像if(txtbarcode.text == int + "x")(我知道这段代码不起作用,但它在这里作为一个例子)
任何帮助将不胜感激,谢谢。EB.

56lgkhnf

56lgkhnf1#

在这种情况下,使用正则表达式似乎会有所帮助
以下是片段

using System;
using System.Text.RegularExpressions;
                    
public class Program
{
    public static void Main()
    {
        var pattern = @"^(-?\d+\.?\d*)x$"; // support negatives and decimal
        var match = Regex.Match("123.31x", pattern);
        
        if(match.Success) {
            Console.WriteLine(match.Groups[1]); //return numbers only
        }
    }
}

支持案例

123x
-1x
123.31x
hl0ma9xz

hl0ma9xz2#

int.TryParseEndsWith + TrimEnd简单:

int? count = text.EndsWith("x") && int.TryParse(text.TrimEnd('x'), out int c) ? c : null;
rlcwz9us

rlcwz9us3#

如果你只想检查文本框中的数字N后面是否跟有字母X,那么你可以实现一个布尔方法,该方法将文本框中的值捕获为字符串,然后将字符串转换为字符数组,然后你可以检查索引0处的值是否是数字,索引1处的值是否是字母X。

public bool CorrectTextBoxInput(string text){
    if(text == string.Empty)
        {
            return false;
        }
        var arr = text.ToCharArray();
        if (Int32.TryParse(arr[0].ToString(), out var res) && arr[1] == 'x')
        {
            return true;
        }
        return false;
}
enxuqcxy

enxuqcxy4#

你可以很容易地使用Regex。

using System.Text.RegularExpressions;
string text = "2x" ;
string exp = "/[0-9]/g";
string result = Regex.matches(text, exp);
Console.WriteLine(result);

输出将是:2这里

tgabmvqs

tgabmvqs5#

看起来regex是你的朋友:

using System.Text.RegularExpressions;

Regex rx = new Regex(@"\d*x")

if(rx.IsMatch(userInput)){
   //do stuff
}

\d -任意数字,* -根据需要多次,x -文字'x'

相关问题