【发布时间】:2017-10-21 07:17:06
【问题描述】:
我不知道下面的代码有什么问题。我的回报不起作用。 我在代码中注释了更多细节。
item 是文本文件中的一行。一个例子是“Port; 2302;”
portTextBox.Text = Config_check(item, "Port", 1);
private string Config_check(string item, string contains, int i)
{
string part = "defualt";
if (item.Contains(contains))
{
MatchCollection Parts = Regex.Matches(item, @"(?i); *(.+?);(?-i)", RegexOptions.Singleline);
foreach (Match m in Parts)
{
part = m.Groups[i].Value; // sets part to '2302'
MessageBox.Show(part); // Shows '2302', Does open message box
return part; // Dosnt work
}
MessageBox.Show(part); // Shows 'Defualt' why?!?!
return part; // Dosnt work
}
MessageBox.Show(part); // Shows 'Defualt' why?!?!
return part; // returns 'Defualt'
}
【问题讨论】:
-
你调试通过了吗?您的输入和正则表达式可能没有执行,并且与您的预期不同。
-
也就是说,您的 cmets 关于正在发生的事情表明正则表达式与
item不匹配。 -
“item”的值是多少,为什么期望正则表达式匹配它?
-
Item 是文本文档中的一行,例如,在该文本文档中,如果该行包含端口搜索两者之间的任何内容,它会显示
Port; 2302;; foreach 中的消息框显示了正确的值,所以我知道该位有效。它的回报不起作用。 -
嗯,第二个和第三个
returns 都给你“默认”,因为part从未设置为其他任何值。