按索引在特定行中插入值
Insert a value in a specific line by index
private void Parse_Click(object sender, EventArgs e)
{
for (int i = 0; i < keywordRanks.Lines.Length; i++)
{
int p = keywordRanks.Lines.Length;
MessageBox.Show(p.ToString());
string splitString = keywordRanks.Lines[i];
string[] s = splitString.Split(':');
for (int j = 0; j < keywords.Lines.Length; j++)
{
string searchString = keywords.Lines[j];
if (s[0].Equals(searchString))
{
richTextBox1.Lines[j] = searchString + ':' + s[1];
}
}
}
}
我在特定行中插入字符串时遇到问题。我有 2 个多行文本框和一个 RichTextBox。
我的应用程序将逐行搜索从 textbox1
到 textbox2
的字符串,并且需要将这些匹配的值插入到 RichTextBox 控件中,但要插入到它在 textbox2
中找到的确切索引位置。
如果在 textbox2
的第 5 行中找到值,则需要将找到的行插入到 RichTextBox 的第 5 行中。
我的代码无法正常工作。我尝试了很多但没有运气。我需要的代码如下所示,但它不起作用并且引发了 IndexOutOfBound
异常。
richTextBox1.Lines[j] = searchString + ':' + s[1];
您的 RichTextBox
必须包含所有需要的行,然后您才能使用行索引设置值。
如果控件不包含文本或换行符 (\n
),则不会定义任何行,任何设置特定 Line[Index]
值的尝试都将生成 IndexOutOfRangeException
异常。
在这里,我使用了一个预先构建的数组,其大小与可能的匹配项数量相同(keywords
文本框的 Lines.Length
)。找到的所有匹配项都存储在此处的原始位置。然后将数组分配给 RichTextBox.Lines
属性。
注意:直接使用和预先设置RichTextBox.Lines
不会有效果:文本将保持为空。
string[] MatchesFound = new string[keywords.Lines.Length];
foreach (string currentSourceLine in keywordRanks.Lines)
{
string[] SourceLineValue = currentSourceLine.Split(':');
var match = keywords.Lines.ToList().FindIndex(s => s.Equals(SourceLineValue[0]));
if (match > -1)
MatchesFound[match] = currentSourceLine;
}
richTextBox1.Lines = MatchesFound;
Source Matches Result
(keywordRanks) (keywords) (RichTextBox)
-------------------------------------------
aand:1 aand aand:1
cnd:5 this one
cnds:9 cnds cnds:9
fan:2 another one
gst:0 cnd cnd:5
fan fan:2
private void Parse_Click(object sender, EventArgs e)
{
for (int i = 0; i < keywordRanks.Lines.Length; i++)
{
int p = keywordRanks.Lines.Length;
MessageBox.Show(p.ToString());
string splitString = keywordRanks.Lines[i];
string[] s = splitString.Split(':');
for (int j = 0; j < keywords.Lines.Length; j++)
{
string searchString = keywords.Lines[j];
if (s[0].Equals(searchString))
{
richTextBox1.Lines[j] = searchString + ':' + s[1];
}
}
}
}
我在特定行中插入字符串时遇到问题。我有 2 个多行文本框和一个 RichTextBox。
我的应用程序将逐行搜索从 textbox1
到 textbox2
的字符串,并且需要将这些匹配的值插入到 RichTextBox 控件中,但要插入到它在 textbox2
中找到的确切索引位置。
如果在 textbox2
的第 5 行中找到值,则需要将找到的行插入到 RichTextBox 的第 5 行中。
我的代码无法正常工作。我尝试了很多但没有运气。我需要的代码如下所示,但它不起作用并且引发了 IndexOutOfBound
异常。
richTextBox1.Lines[j] = searchString + ':' + s[1];
您的 RichTextBox
必须包含所有需要的行,然后您才能使用行索引设置值。
如果控件不包含文本或换行符 (\n
),则不会定义任何行,任何设置特定 Line[Index]
值的尝试都将生成 IndexOutOfRangeException
异常。
在这里,我使用了一个预先构建的数组,其大小与可能的匹配项数量相同(keywords
文本框的 Lines.Length
)。找到的所有匹配项都存储在此处的原始位置。然后将数组分配给 RichTextBox.Lines
属性。
注意:直接使用和预先设置RichTextBox.Lines
不会有效果:文本将保持为空。
string[] MatchesFound = new string[keywords.Lines.Length];
foreach (string currentSourceLine in keywordRanks.Lines)
{
string[] SourceLineValue = currentSourceLine.Split(':');
var match = keywords.Lines.ToList().FindIndex(s => s.Equals(SourceLineValue[0]));
if (match > -1)
MatchesFound[match] = currentSourceLine;
}
richTextBox1.Lines = MatchesFound;
Source Matches Result
(keywordRanks) (keywords) (RichTextBox)
-------------------------------------------
aand:1 aand aand:1
cnd:5 this one
cnds:9 cnds cnds:9
fan:2 another one
gst:0 cnd cnd:5
fan fan:2