由于标题暗示我正在尝试从richtextbox中检索某一行数字,然后将其放入单独的文本框中。我在下面尝试过这段代码,但它并不想和我合作。这可能是错误的,并且可能有更简单的方法,但我对这些东西都很陌生,我将非常感谢我能在这件事上得到的所有帮助。
我有一个名为tbPersNr;
的文本框一个名为tbText的RichTextBox;
一个名为btnGet的按钮;
string regPattern = @"\\d{6}-\\d{4}";
int indexOfSearch = 0;
private void btnGet_Click(object sender, EventArgs e)
{
int startIndex = 0;
if (tbText.Text.Length > 0)
{
startIndex = HittaPersNr(regPattern, startIndex, tbText.Text.Length);
}
if (startIndex > 0)
{
this.tbPersNr.Text = regPattern.ToString();
}
}
public int HittaPersNr(string txtToSearch, int searchStart, int searchEnd)
{
// Setting default value to -1.
int retVal = -1;
// Validating start of the search
// om indexOfSearch = -1, slutar sökningen
if (searchStart >= 0 && indexOfSearch >= 0)
{
// Validating end of search
if (searchEnd > searchStart || searchEnd == -1)
{
// Searching for results in richtextbox
indexOfSearch = tbText.Find(regPattern, searchStart, searchEnd, RichTextBoxFinds.None);
// Validating if search resulted in any finds.
if (indexOfSearch != -1)
{
// putting index to value in the text.
retVal = indexOfSearch;
}
}
}
return retVal;
}
更新
为所有有用的答案干杯,并且抱歉表达自己非常笨拙。但我希望我在这里错误的轨道,我会尝试修复我的应用程序与一些答案。 Welbog ,,,那里有很好的侦探工作,,,呵呵呵,,好,你明白我的意思。感谢所有指出如何以正确方式编写正则表达式的人,非常混乱。
最棒的
西蒙
答案 0 :(得分:0)
RichTextBox.Find()
不一个RegEx-Function!
改为使用Regex.Match(tbText.Text, regPattern)
。
答案 1 :(得分:0)
除非您真的想要搜索包含\
的内容,否则我认为您可能会有太多的反斜杠。不应该是这个吗?
string regPattern = @"\d{6}-\d{4}";
字符串前面的@
可防止解释反斜杠,因此它们会成为字符串的一部分。
答案 2 :(得分:0)
如果您尝试使用检查6位数的正则表达式,然后是-
然后是4位数,那么正则表达式是错误的:
@"\\d{6}-\\d{4}"
您可以使用string literal,也可以使用\
,但不能同时使用@"\d{6}-\d{4}"
"\\d{6}-\\d{4}"
。
其中任何一个都可以:
Find
此外,您正试图在RichTextbox
的{{1}}方法中使用正则表达式,该方法不使用正则表达式!
答案 3 :(得分:0)
看起来像您打算匹配您的模式,然后将结果打印到名为tbPersNr
的文本框中。至少这就是我认为这段代码的用途:
if (tbText.Text.Length > 0)
{
startIndex = HittaPersNr(regPattern, startIndex, tbText.Text.Length);
}
if (startIndex > 0)
{
this.tbPersNr.Text = regPattern.ToString();
}
但regPattern
是设置为\\d{6}-\\d{4}
的字符串。它没有被模式匹配的东西所取代,我相信这是你所期待的(我无法真正说出来,但我认为没有理由为你打印这样的字符串文字)。因此,除了其他答案带来的分数之外,您还需要从富文本框中实际检索您匹配的值才能显示它。
拨打Substring
即可使用您已找到的startIndex
和11
的长度(这是您的正则表达式匹配的字符串的长度) )。