按索引在特定行中插入值

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。
我的应用程序将逐行搜索从 textbox1textbox2 的字符串,并且需要将这些匹配的值插入到 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