C# 确定字符串是否以字母字符开头并包含数字
我正在制作一个C# 确定字符串是否以字母字符开头并包含数字,c#,string,infix-notation,startswith,ends-with,C#,String,Infix Notation,Startswith,Ends With,我正在制作一个中缀计算器,其中合法标记包括:+,-,*,/,(,),非负整数,以及任何以一个或多个字母开头,以一个或多个数字结尾的字符串 我试图找到最有效的方法来确定给定字符串是否以一个或多个字母开头,以一个或多个数字结尾。问题是字母字符必须位于数值之前(例如X1、XX1、X11)。但是,如果字符串包含类似于1X、X1X、X#1的内容,则输入无效。我知道这包含许多可能性,我希望有一种方法可以简化它 到目前为止,我已经研究了一些方法,比如字符串、函数和函数。我只是觉得有太多的可能性来简化成一个简短
中缀计算器
,其中合法标记包括:+,-,*,/,(,),非负整数,以及任何以一个或多个字母开头,以一个或多个数字结尾的字符串
我试图找到最有效的方法来确定给定字符串是否以一个或多个字母开头,以一个或多个数字结尾。问题是字母字符必须位于数值之前(例如X1、XX1、X11)。但是,如果字符串包含类似于1X、X1X、X#1的内容,则输入无效。我知道这包含许多可能性,我希望有一种方法可以简化它
到目前为止,我已经研究了一些方法,比如字符串、函数和函数。我只是觉得有太多的可能性来简化成一个简短的lambda表达式或一行。事实上,由于我们不一定保证任何类型的输入,因此似乎必须检查所有N个字符,以确保满足这些条件
下面是到目前为止我所掌握的代码。此代码包括根据正则表达式@”([()+*/-])“
如果您有任何建议性的方法和/或任何参考资料,我可以解决这个问题,请放心 你可以试试
char[] letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray();
char[] numbers = "1234567890".ToCharArray();
foreach(string s in infixExp.Split(' '))
{
if(letters.Contains(s[0]))
{
//do stuff
}
if(numbers.Contains(s[s.Length-1]))
{
//do more stuff
}
}
要确定给定字符串是否以一个或多个字母开头,并以一个或多个数字结尾,可以使用Regex
类中的静态函数
Regex.IsMatch:
Indicates whether the regular expression finds a match in the input string.
然后可以将正则表达式^[A-Z]+[0-9]+$
作为该方法的第二个参数。同样,如果希望忽略大小写,则可以提供RegexOptionsRegexOptions.IgnoreCase
这将确保字符串输入至少以一个字符开头,后跟至少一个数字(例如XX1、X3、XZ9)
有关正则表达式语言的更多信息可以通过此链接找到。我希望这对将来的任何人都有帮助 我真的不明白为什么会这么复杂。正则表达式^[A-Z]+[0-9]+$
不会起作用吗?@spender甚至可能^[A-zA-Z]+\\d+$
。从问题中,“…确定给定字符串是否以一个或多个字母开头,以一个或多个数字结尾。”@spender我想我需要更好地查看正则表达式文档,因为这非常有效!谢谢。@Jonathan:^
(行首)后接[A-Z]+
(字母A到Z的一次或多次出现)后接[0-9]+
(数字0到9的一次或多次出现)后接$
(行尾)
Regex.IsMatch:
Indicates whether the regular expression finds a match in the input string.