-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);
}

[]また、文字を 2 回置き換えないでください。それは必要ない。

コードをベースラインとして使用すると、結果のコードは次のようになります。

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 に答える