所有文字,我想提取文本从来自richTextBox1.Text 首先我有一个richTextBox1 MouseUp事件在哪里添加到TextBox2中和textBox3串到每个TextBox和随后与提取方法我想提取文本两串之间。用子字符串计算解析字符串的方法有什么问题?
bool isFirstClick = false;
List<string> result = new List<string>();
private void richTextBox1_MouseUp(object sender, MouseEventArgs e)
{
if (isFirstClick == false)
{
textBox2.Text = richTextBox1.SelectedText;
isFirstClick = true;
}
else
{
textBox3.Text = richTextBox1.SelectedText;
isFirstClick = false;
result = ExtractFromString(this.richTextBox1.Text, textBox2.Text, textBox3.Text);
}
}
而且提取方法:
private List<string> ExtractFromString(string s, string startTag, string endTag)
{
var names = new List<string>();
int startIndex = 0;
int endIndex = 0;
int position = 0;
startIndex = richTextBox1.Text.IndexOf(startTag);
while (startIndex > 0)
{
endIndex = richTextBox1.Text.IndexOf(endTag, position);
//parsing part
names.Add(richTextBox1.Text.Substring(startIndex + startTag.Length,
endIndex));
position = endIndex + endTag.Length;
startIndex = (richTextBox1.Text.IndexOf(startTag, position));
//ending loop
if (startIndex == -1)
{
break;
}
}
return names;
}
的问题是,循环永远不会结束。而名单越来越大。
names.Add(richTextBox1.Text.Substring(startIndex + startTag.Length,
endIndex));
ArgumentOutOfRangeException:索引和长度必须引用位置的字符串
中在这种情况下,STARTTAG是128
约2-3分钟,我上线越来越异常后和endTag单“ 在这种情况下,整个字符串是:128.png” 它应该给结果是.png
我使用while循环的原因是我想找到第一个t ime在这个地方.png,然后在下一个循环,而所有其他地方在richTextBox1.Text该.png存在。
更新
我的代码现在,这是提取方法:
private void ExtractFromString(string s, string startTag, string endTag)
{
int startPos = richTextBox1.Text.IndexOf(textBox2.Text) + textBox2.Text.Length;
int endPos = richTextBox1.Text.IndexOf(textBox3.Text, startPos);
string extractedText = richTextBox1.Text.Substring(startPos, endPos - startPos).Trim();
}
而且在textBox2.Text在这个例子中有个字母:M 在textBox3.Text有字母:red 我想提取的richTextBox1.Text中的字符串是:谋杀 所以我应该得到的结果是:urde
但是我得到的是:
l><html itemscope="" itemtype="http://schema.org/SearchResultsPage" lang="en-IL"><head><meta content="/images/google_favicon_128.png" itemprop="image"><meta content="origin" id="mref" name="referrer"><title>murde
richTextBox1.Text中的文本很长,我无法将它全部粘贴在这里。
编辑
这是例如在richTextBox1文字: richTextBox1 text content 在我打上RichTextBox的是textBox2.Text第一个标签是字母:X,然后在textBox3.Text结束标记是字母:NS 这个词是:XMLNS 而结果应该毫升 但我得到的是:html11/DTD/xhtml11.dtd\">\n\n<html xml
在它从上线8号RichTextBox的。 所以在某些情况下,它可以工作,但在某些情况下,它不会。也许这取决于我在每一面开始和结束时标记了多少个字符?
你得到那个长字符串的原因是因为你只是在寻找一个'm'作为你的startTag。 String.IndexOf(String)返回搜索字符串的第一个出现的索引。你能不能简单地选择你想查找的文本,并计算出现的那个,而不是你现在正在做的事情? – noMad17
是的,我会做一些测试,我认为它的工作,你没有必要标记单个字母。但另一件事是我错误的是关于在第一次提取后搜索整个文本。我说我想找到我提取的所有地方,但没有。我需要的是找到所有具有相同startTag和endTag的地方,例如我标记并从中提取标签之间的文本。文字可以不同。 –
我的意思是在第一个地方让我说我有字符串:你好世界,我标记hel和世界,所以结果将lo现在我想循环的文本,并找到更多的地方与startTag hel和endTag世界和extrach文本在标签之间,所以在某些地方它可以作为结果和一些地方56或lolo或其他任何地方。我的意思是搜索应该为标签,然后在所有地方提取它们之间的文本,并将提取的字符串添加到List。 –