-1

我正在读取的文件中有一个行列表,它们看起来像这样:

[something]:[here]
[something]:[here]
[something]:[here]
[something]:[here]

现在下面的代码基本上确定列表中是否有任何内容在TextBox中,如果文本框包含“键”,那么键将被替换为键的值。

        string key, value, tempLine = "";

        using (StringReader reader = new StringReader(list))
        {
            string line;
            string[] split;
            while ((line = reader.ReadLine()) != null)
            {
                // Do something with the line.
                tempLine = line.Replace("[", "");
                tempLine = tempLine.Replace("]", "");

                split = tempLine.Split(':');
                key = split[0];
                value = split[1];
                    key = key.Replace(@"[", "");
                    key = key.Replace(@"]", "");
                    value = value.Replace(@"[", "");
                    value = value.Replace(@"]", "");
                if (((TextBox)tabControl1.SelectedTab.Controls[0]).Text.Contains("[" + key + "]"))
                {

                    ((TextBox)tabControl1.SelectedTab.Controls[0]).Text = ((TextBox)tabControl1.SelectedTab.Controls[0]).Text.Replace(key, value);
                }
            }
        }

现在我遇到的问题是,无论我做什么——括号([和])都会不断出现!

请问,我试图摆脱括号串的方式有问题吗?我怎样才能让他们离开?

4

2 回答 2

4

似乎您正在将由 [key] 组成的占位符搜索到您的文本框中,但是当替换时,该值仅替换键,保持[]不变。

你必须用这个替换你的代码......

if (((TextBox)tabControl1.SelectedTab.Controls[0]).Text.Contains("[" + key + "]"))
{
    ((TextBox)tabControl1.SelectedTab.Controls[0]).Text = ((TextBox)tabControl1.SelectedTab.Controls[0]).Text.Replace("[" + key + "]", value);
}

并且不要替换两次[]字符。没有必要。

使用您的代码作为基线,生成的代码必须是:

string key, value, tempLine = "";

using (StringReader reader = new StringReader(list))
{
    string line;
    string[] split;
    while ((line = reader.ReadLine()) != null)
    {
        // Do something with the line.
        split = line.Split(':');
        key = split[0];
        value = split[1].Replace("[", "").Replace("]", "");

        if (((TextBox)tabControl1.SelectedTab.Controls[0]).Text.Contains(key))
        {
            ((TextBox)tabControl1.SelectedTab.Controls[0]).Text = ((TextBox)tabControl1.SelectedTab.Controls[0]).Text.Replace(key, value);
        }
    }
}
于 2013-05-28T20:39:22.693 回答
1

也许尝试:

((TextBox)tabControl1.SelectedTab.Controls[0]).Text = ((TextBox)tabControl1.SelectedTab.Controls[0]).Text.Replace("[" + key + "]", value);
于 2013-05-28T20:38:40.303 回答