簡體   English   中英

奇怪的行為取代“\\”

[英]Odd behaviour replacing “\”

我有這個問題,其中有一些strnig,其中包括文字表達式"\\\\"在幾個場合,我想用"\\"替換它,當我嘗試用string.replace替換它時,只復制第一個發生,如果我使用正則表達式,它根本不替換它

我在線查看了一些RegEx測試人員,據說我的代碼沒問題,返回我的意思,但我的代碼根本不起作用

使用string.replace

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

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

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

使用RegEx

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

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

如果我使用文字是相同的情況(在替換函數參數上使用(@"\\\\", @"\\")給出與上面相同的結果)。

謝謝!

編輯:

我認為我的最終目標是令人困惑所以我會在這里更新它,我想要做的是:

輸入:包含字符串的變量: "\\\\\\\\url.com\\\\place\\\\anotherplace\\\\extraplace\\\\"

處理

保存字符串"\\\\url.com\\place\\anotherplace\\extraplace\\" 輸出變量(因此我可以將其發送到ffmpeg並將其識別為有效路徑)

改變這個:

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

對此

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

問題不在於Regex.Replace參數。

您的字符串中只出現一次\\\\\\\\ 所以它完全按照你的要求去做。

沒有逃避(即沒有添加額外的/)

  • 你的實際投入是什么?
  • 你想要的產量是多少?

您應該將其更改為以下內容

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

這似乎是預期的行為。

在String.Replace的情況下:最初,example包含一個以兩個反斜杠開頭的字符串,並在字符串的其他地方包含一些單個反斜杠。 然后,您嘗試使用單個反斜杠替換所有出現的雙反斜杠,該反斜杠工作並生成一個以單個反斜杠開頭的字符串,並在字符串中的其他位置包含一些單個反斜杠。

在Regex.Replace案例中:在這種情況下,示例的原始內容是無關緊要的。 你的正則表達式模式是一個雙反斜杠,當被解釋為正則表達式模式時,意味着“找到一個反斜杠”。 然后用一個反斜杠替換此模式,這樣就不會對字符串進行更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM