5

私はこの問題を抱えており、とりわけリテラル表現"\\"を何度か使用していて"\"、それをstring.replaceに置き換えようとすると、最初に出現したものだけを置き換えて、それを置き換えたいと思っています。正規表現では、それはまったく置き換えられません

オンラインでいくつかの正規表現テスターを確認しましたが、コードは問題なく、意図したとおりに返されますが、コードがまったく機能しません。

string.replace

example = "\\\\url.com\\place\\anotherplace\\extraplace\\";

example = example.replace("\\\\","\\");

returns example == "\\url.com\\place\\anotherplace\\extraplace\\";

正規表現を使用

example = Regex.Replace(example,"\\\\","\\");

returns example = "\\\\url.com\\place\\anotherplace\\extraplace\\";

リテラルを使用する場合も同じです(Replace関数のパラメーターを使用(@"\\", @"\")すると、上記と同じ結果が得られます)。

ありがとう!

編集:

私の最終的な目標は混乱を招くことだったと思うので、ここで更新します。やりたいことは次のとおりです。

入力: 文字列を保持する変数:"\\\\url.com\\place\\anotherplace\\extraplace\\"

プロセス

文字列を保持する出力 変数"\\url.com\place\anotherplace\extraplace\" (ffmpegに送信でき、有効なルートとして認識されます)

4

4 に答える 4

5

これを変える:

example = "\\\\url.com\\place\\anotherplace\\extraplace\\"; 

これに

example = @"\\\\url.com\\place\\anotherplace\\extraplace\\"; 

Regex.Replace問題となったのはパラメータではありませんでした。

于 2012-10-17T17:57:18.060 に答える
1

\\\\文字列に出現するのは1つだけです。だから、それはあなたがそれをするように頼んだことを正確にやっています。

エスケープせずに(つまり、/を追加せずに)

  • あなたの実際のインプットは何ですか?
  • あなたの望む出力は何ですか?
于 2012-10-17T17:56:02.070 に答える
1

次のように変更する必要があります

example = example.replace(@"\\", @"\");
于 2012-10-17T18:01:38.640 に答える
1

これは予想される動作のようです。

String.Replaceの場合:最初、exampleには、2つの円記号で始まる文字列が含まれ、文字列の他の場所にいくつかの単一の円記号が含まれています。次に、発生するすべての二重円記号を単一の円記号に置き換えようとしました。これにより、単一の円記号で始まり、文字列の他の場所にいくつかの単一の円記号を含む文字列が生成されました。

Regex.Replaceの場合:この場合、例の元の内容は関係ありません。正規表現パターンは二重の円記号です。これは、正規表現パターンとして解釈される場合、「単一の円記号を見つける」ことを意味します。次に、このパターンを1つの円記号に置き換えます。これにより、文字列は変更されません。

于 2012-10-17T18:09:06.950 に答える