Regex计数不起作用
本文关键字:不起作用 Regex | 更新日期: 2023-09-27 17:58:37
它一直转到"缺少数字"的else语句。如果我输入"The",它会读取,但当我输入两个数字时,它表示计数仍然是0
。然后将返回else语句,而不是继续并更改标签。为什么?
protected void submit_Click(object sender, EventArgs e)
{
string input = textbox.Text;
string s = textbox.ToString();
input = input.Trim();
MatchCollection matches = Regex.Matches(s, @"'d+");
string[] result = matches.Cast<Match>()
.Take(2)
.Select(match => match.Value)
.ToArray();
if (input.StartsWith("The") || input.StartsWith("the"))
{
if (matches.Count == 2)
{
alarm.Text = result[0];
server.Text = result[1];
}
else
{
string script = "alert('"Missing Number(s)!'");";
ScriptManager.RegisterStartupScript(this, GetType(),
"ServerControlScript", script, true);
}
}
}
Regex.Matches.Count
工作正常。
您需要更换
string s = textbox.ToString();
带有
string s = textbox.Text;
否则,您将分析不同的字符串(textbox
类型的字符串)。
此外,您可以仅使用一个变量作为文本框值,并仅在必要时对其进行修剪。
我会这样做。我认为这样会更干净、更容易阅读:
string input = textbox.Text.Trim();
var match = Regex.Match(input, @"^[tT]he's('d+)'s('d+)'b");
if (match.Success && match.Groups.Count == 3)
{
var alarm = match.Groups[1].Value;
var server = match.Groups[2].Value;
}
else
{
string script = "alert('"Missing Number(s)!'");"; // Or "invalid format".
ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);
}
您没有说太多关于输入字符串的内容,所以您可能需要调整正则表达式。我想你应该在术语之间留空格,忽略第二个数字之后的任何内容。