0

私は次の文字列を持っています:

 "\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox"

私はそれを次のように見せたいです:

"\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231_1723221348.vox"

私が試してみました

fileToConvert.Replace(@"\\",@"\")

これにより、次のものが生成されます。

"\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox"

なぜ?!?

皆さんありがとう!

4

3 に答える 3

4

デバッガーで結果文字列を調べていると思います。この文字列はエスケープされます。つまり、TABは\ tで、returnは\nです。「実際の」値は、値の横にある虫眼鏡アイコンをクリックして調べることができます。

また、端末(例System.Console.WriteLine())に印刷すると、「正しい」値が表示されます。

于 2012-06-25T20:51:00.527 に答える
2

私はあなたがデバッガーを見ると思います、そしてそれがあなたがこの振る舞いをする理由です...

それぞれ\\が実際には1つ\です。そのため、\\\\置き換えられます\\(2つの "\"が1に置き換えられます)。\\実際には1つの "\"であるため、置き換え後も "\"を取得します(2つの "\"文字列が見つからなかったため)。

その理由は、\文字が特殊文字をマークしているためです。たとえば、タブ(\ t)文字が必要な場合は、"\t"改行の文字列があります"\r\n"。したがって、実際に文字列に「\」文字を含める場合は、前にもう1つの「\」文字を付けます。"\\"

つまり、デバッガーに「\\ AAA.AA.A.AA \ d $ \ ivr \ vm \ 2012May \ 29 \ 10231_1723221348.vox」と表示されている場合、実際の文字列は「\AAA.AA.A.AA\」です。 d $ \ ivr \ vm \ 2012May \ 29 \ 10231_1723221348.vox "

したがって、fileToConvert.Replace(@"\\",@"\")次のようになります。

"\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231_1723221348.vox"

デバッガーに次のように表示されます"\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox"


結論として:

fileToConvert.Replace(@"\\",@"\")元の文字列(デバッグで表示されるもの"\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox")が実際にあるためでも、何もする必要はありません。"\\AAA.AA.A.AA\d$\ivr\vm\2012May\29\10231_1723221348.vox"

于 2012-06-25T20:53:20.160 に答える
0
    string s = @"\\\\AAA.AA.A.AA\\d$\\ivr\\vm\\2012May\\29\\10231_1723221348.vox";
    var output = s.Replace(@"\\",@"\");

上記のコードコードを試しましたが、正常に動作します。

于 2012-06-25T20:53:19.357 に答える