42

文字列から特定の文字をすべて削除しようとしています。私は使っていますがString.Replace、何もしません。理由はわかりません。これは私の現在のコードです:

        if (Gamertag2.Contains("^"))
        {
            Gamertag2.Replace("^" + 1, "");
        }

これにより、文字列は以前の状態のままになります。理由を教えてもらえますか?

4

4 に答える 4

86

String.Replaceの戻り値を元の文字列インスタンスに割り当てる必要があります。

したがって、代わりに(Contains check)

if (Gamertag2.Contains("^"))
{
    Gamertag2.Replace("^" + 1, "");
}

これだけ(その神秘的なものは何+1ですか?):

Gamertag2 = Gamertag2.Replace("^", "");
于 2012-04-05T00:15:12.180 に答える
14

2つのこと:

1)C#文字列は不変です。これを行う必要があります:

Gamertag2 = Gamertag2.Replace("^" + 1, "");

2)"^" + 1?なぜあなたはこれをやっている?あなたは基本的にGamertag2.Replace("^1", "");、あなたが望んでいるものではないと私が確信していることを言っています。

于 2012-04-05T00:14:07.407 に答える
3

登山が言ったように、あなたの問題は間違いなくです

Gamertag2.Replace("^"+1,"");

その行は、文字列から「^1」のインスタンスのみを削除します。「^」のすべてのインスタンスを削除する場合は、次のようにします。

Gamertag2.Replace("^","");
于 2014-08-12T18:50:08.417 に答える
0

このスレッドは古く、私のソリューションは極端に非効率的である可能性があることも知っていますが、文字列のすべての出現箇所を置き換えます。「\r\ n \ r\n」に置き換える「\r\ n \ r \ n \ r \ n」を探していた場合、1つのReplace()ですべてをキャッチできなかったことがわかりました。

そのため:

do // First get rid of spaces like "  \r"
{
  str = str.Replace(" \r","\r")
} while (str.Cointains(" \r"));

do // Then remove the CrLf's in surplus.
{
  str = str.Replace("\r\n\r\n\r\n","\r\n\r\n")
} while (str.Cointains("\r\n\r\n\r\n"));
于 2021-08-11T09:35:50.960 に答える