【发布时间】:2015-07-15 19:39:21
【问题描述】:
我正在尝试使用一种方法来验证开头有两个大写字母和之后有 3 个数字的字符串。我现在写的是:
static void Main(string[] args)
{
Console.WriteLine("Enter stock quantity:");
string qty = Console.ReadLine();
string code = enterStockCode();
}
static string enterStockCode()
{
string[] pLetters = new string[] { "BL", "FS", "HJ", "PX" };
bool isValid = false;
while (isValid == false)
{
Console.WriteLine("Enter stockcode:");
string stockCode = Console.ReadLine();
char[] stockCodeSplit = stockCode.ToCharArray();
var vLetters = (stockCodeSplit[0] + stockCodeSplit[1]);
var vNumbers = (stockCodeSplit[2] + stockCodeSplit[3] + kCodeSplit[4]);
// I'd like to know if there is a better way of splitting this string
// by using regular expressions or another way.
foreach (var Letter in pLetters)
{
if (vNumbers.ToString() == Letter)
{
if (Regex.Match(vNumbers.ToString(), @"^\d[0-9]{2}$").Success)
return stockCode;
Console.WriteLine("Invalid stock code");
}
}
}
return "Invalid";
}
(另外我想知道“2”是否在:
@"^\d[0-9]{2}$"
表示c#使用索引为0的2倍或3倍。)
感谢任何帮助。
【问题讨论】:
-
你试过了吗
^[A-Z]{2}\d{3}$ -
您是否查看过任何在线 RegEx 文档和解释/示例..?也看看一些 Char.IsDigit 函数,我认为这在我看来会更容易或 string.Contains 方法
-
{2}表示两次。你的代码有什么问题? -
您可以只针对
^(BL|FS|HJ|PX)[0-9]{3}$进行验证,而不必费心拆分等。 -
而对于“拆分字符串”(没有正则表达式),您可以使用多个
.SubString()