2012-06-28 159 views
-1

我有以下代碼:C#正則表達式不工作

content = Regex.Replace(content, "{%Pwd%}", pwd ?? ""); 

如果PWD是空的,我希望它用「」來代替,但它仍然是拉動它爲空。 無論如何,我可以解決這個問題。此外,爲什麼它沒有按預期工作?

+6

你確定'pwd'不是'null'',而不是'null'嗎? – Ryan

+0

點擊時pwd的內容是什麼? (使用斷點)。 –

回答

2

首先我會分裂這條線分爲兩個:

string replacement = pwd ?? ""; 
content = Regex.Replace(content, "{%Pwd%}", replacement); 
  • 什麼是replacement價值?
  • 是否正在將內容替換爲"null"

我猜測這將是"null"""彷彿更換爲nullArgumentNullException會被拋出。

我還會檢查{%Pwd%}是否正確的正則表達式 - 因爲Expresso不能識別它,所以它可能需要某些字符轉義。沒有content我們只能猜測。

如果您檢查這些事情,答案應該變得明顯。

+2

我很感興趣 - 哪一部分解決了問題? –

+0

可能是'null'和''null''部分,因爲轉義'{''}沒有效果。 – qJake

1

使用此相反,由於{}在正則表達式特殊的意義:

content = Regex.Replace(content, "\{%Pwd%\}", pwd ?? ""); 

你需要逃避你的花括號。

編輯:顯然,在正則表達式中並不重要,但它永遠不會傷害逃脫。

+0

這種情況並不重要。這不會解決問題。 – Ryan

+0

爲什麼呢? – qJake

+0

因爲它們以這種形式使用:'{1,2}'。當它不僅僅是數字時,它是毫不含糊的。無論如何,這可能是一個很好的建議,可以避免意外,但這不是問題。 – Ryan