-1

基本的に私たちの問題は次のとおりです: 次のような文字列を置き換えることはできません: 10003* しかし、次のような文字列を置き換えることはできます: 10003

次のような文字列の一部を置き換えたいとします: 10003* これがコードです:

string text = sr2.ReadToEnd();
sr2.Close();
while (loop != lstTxt.Items.Count)
{
    string SelectedItem = lstTxt.SelectedItem.ToString() + "*";

    text = text.Replace(SelectedItem, "tietze111");


    if (lstTxt.SelectedIndex < lstTxt.Items.Count - 1)
        lstTxt.SelectedIndex++;
    loop++;

}

sw2.Write(text);

しかし、うまくいきません。置換する部分の * を省略しても機能します。ただし、* も置き換える必要があります。私たちが何を変えなければならないか知っていますか?

これを使用すると機能します:

string text = sr2.ReadToEnd();
sr2.Close();
while (loop != lstTxt.Items.Count)
{
    string SelectedItem = lstTxt.SelectedItem.ToString(); // changed

    text = text.Replace(SelectedItem, "tietze111");


    if (lstTxt.SelectedIndex < lstTxt.Items.Count - 1)
        lstTxt.SelectedIndex++;
    loop++;

}

sw2.Write(text);

-- using (var sr2 = new StreamReader(Application.StartupPath + @"\website\Dehler 22 ET.htm", Encoding.Default)) {

                using (var sw2 = new StreamWriter(tempFile, true, Encoding.Default))

ファイルがまだ ASCII であるため、これを使用しています。多分それが問題です。これをどのように解決しますか?

4

4 に答える 4

0

やってみました?

"[\*]"

または

@"[*]" 
于 2012-04-30T19:41:00.297 に答える
0

次の行を修正します。

string SelectedItem = lstTxt.SelectedItem.Value;

あなたは価値ではなくアイテムを受け取っています。

于 2012-04-30T19:31:57.627 に答える
0

このString.Replace(String,String)メソッドは、どの文字に対しても特別なことを行いません。置換しようとしている ID の文字が、一致させようとしている文字と同じではありません。アスタリスクをデータ ソースからコードにコピーして、問題がまだ存在するかどうかを確認します。

于 2012-04-30T19:45:02.863 に答える
0

あなたの問題 * は他のタイプでエンコードされています。アスタリスク U+002A の Unicode 値

これを試すことができます。注 Char.MinValue は、空白の Char を持つことができないため、技術的には null 値です。

あなたの場合:lstTxt.SelectedItem.ToString() + '\u002A'.ToString();

それがうまくいかない場合は、(* に別のエンコードされた値を使用して) 削除してみて、文字列内で実際に見つけられることを確認してください。

SomeString.Replace('\u002A', Char.MinValue);

また

SomeString.Replace('\u002A'.ToString(), String.Empty);

私は以前にこのような問題に遭遇したことがありますが、うまくいくまで試行錯誤のようなものになってしまいます. 昨年の夏に発生した同様の問題C#String.ReplaceがSymbol(™、®)を見つけられない/置き換えない

于 2012-04-30T20:42:10.917 に答える