2011-09-09 243 views
1

更換名稱的所有實例中的所有字符串我們有它很多項目上有大的解決方案,並在整個表單中,信息等方面的項目,我們有一個公司名稱的引用。多年來,這家公司的名字一直是一樣的,所以它沒有計劃要改變,但現在已經有了。在溶液

該應用程序是專門針對在美國一個國家,所以本地化/字符串資源文件從來沒有考慮或使用。

快速查找拉昇1309線中的地址的所有實例,但我們只需要改變,實際上最終會被顯示給用戶(按鈕文本,消息文本等)線。

代碼以後可以重構,以使其更具可讀性,當我們有時間,以確保沒有中斷,但目前我們正在試圖找到所有可見的情況下,更換它們。

有什麼方法可以輕鬆找到這些「實例」?也許是一種正則表達式,可以在Visual Studio中的「查找所有」功能中使用,以便在包裹在引號內時纔會將該單詞拉出來?

在我試圖讓自己的工作變得更容易,花費的時間遠超過它只能逐行運行所花費的時間之前,我想看看是否有人做過類似的事情,並且擁有解。

回答

1

你可以試試這個。 (我希望你的代碼是源代碼控制下進行!)

Foobar{[^"]*"([^"]*"[^"]*")*[^"]*}$ 

而且隨着

NewFoobar\1 

說明

Foobar您正在尋找

[^"]*"一種解決方法的名稱替換缺少非貪婪修飾符。 [^"]意味着什麼都不匹配,但是"這意味着這匹配任何東西,直到第一個"

([^"]*"[^"]*")*爲了確保您引號內只有匹配。這確保了以下只有完整的引號集。

[^"]*確保沒有報價了,直到行$

{}大括號的擊打這些東西按照你的公司命名爲捕獲組的結束,你可以參考它使用\1

+0

找到112行:比1309好得多。將手動通過它們以確保沒有問題。謝謝! –

1

VS正則表達式功能相當簡單。它可能佔全功率正則表達式的20%。這不足以滿足您的需求。例如,解決這個問題的方法之一是VS正則表達式不支持的quote-delimited problem is to use non-greedy matching。我會寫a perl script或在Visual Studio之外運行的C#程序集,只是通過所有文件(具有特定的文件擴展名)進行比賽並修復所有內容。然後重新加載到Visual Studio中,然後就完成了。那麼,如果一切順利的正則表達式。

最終你真的必須注意什麼是這樣的代碼:

Log.WriteLine("Hello " + m_CompanyName + " There"); 

在這種情況下,正則表達式會認爲「m_CompanyName」出現兩個引號之間 - 但它不是你的意思。在這種情況下,您需要更復雜,我想你會找到一個special .net regular expression extension的答案。

+0

到感謝文章參考,以及VS正則表達式不支持整個正則表達式的信息。我之前曾經遇到過這個問題,但沒有意識到這是故意的(而不是我的錯誤)。很高興知道! –