所有文字,我想提取文本從來自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。 –