none
運用取代運算式更換程式碼 RRS feed

  • 問題

  • 各位前輩們好

    我在寫程式的時候有先定義 產品編號=0 產品名稱=1 訂單號碼=2

    程式裡就會用 Table1BindingSource.Current(產品名稱)=TextBox1.Text 等語法

    而後發覺可以用Column名稱判別後打算用尋找與取代,把所有的程式碼都進行更正

    使用尋找「Table1BindingSource\.Current\(.+\)=」可以正確的反白我想修改的程式片段

    但取代用「Table1BindingSource\.Current\(\".+\"\)=」並不能成功取代程式

    請教前輩們尋找與取代可以這樣做嗎?如果可以,我應該怎麼進行修正呢?

    MSDN規則運算式

    看了幾遍還是沒有頭緒

    2013年12月12日 上午 04:06

解答

所有回覆

  • 更改了原始碼後必須有建置的動作, 程式碼才會生效, 建議將設定BindingSource的Current屬性的動作包裝成一個方法, 再透過傳入的參數控制要設定那一個BindingSource

    2013年12月12日 上午 07:16
  • tihs 您好

    我想您可能有點誤解了

    我的意思是在設計程式碼的時候按下 Ctrl+H 打開取代視窗

    直接輸入「Table1BindingSource\.Current\(.+\)=」

    可以正確地找出我想取代掉的程式碼(不管Current括號裡的內容)

    取代欄輸入「Table1BindingSource\.Current\(\".+\"\)=」按下取代

    沒有把程式碼取代成功(Current括號裡內容前後加上雙引號)

    如果可以這樣做的話,那對後續我持續將VB6程式碼翻新成.NET可以起到不小作用

    2013年12月12日 上午 09:48
  • 看一下這個討論的做法有沒有幫助:Visual Studio Regex Find and Replace function
    • 已標示為解答 GISK 2013年12月13日 上午 09:52
    2013年12月13日 上午 07:03
  • 你需要將 Current 括弧中的內容視為取代的一部分,用 regex 的群祖先記憶起來,在替代中使用群組記憶 ($1, $2, ...) 進行還原

    另外不知道使用的是哪一版 Visual Studio 呢?

    支援 Regular Expression 的方式在 Visual Studio 不同版本間稍有不同

    語法以及版本差異參考 http://msdn.microsoft.com/zh-tw/library/2k3te2cs.aspx



    dino

    • 已標示為解答 GISK 2013年12月13日 上午 09:52
    2013年12月13日 上午 09:04
  • tihs 您好

    謝謝您提供的文章,很好的解決了我的問題

    尋找「Table1BindingSource\.Current\({[^"]+}\)\=」

    取代「Table1BindingSource.Current("\1")=」

    原本我還很疑惑這個\1  \2功能是什麼,原來是暫存用的

    又多學到一點東西了^_^

    2013年12月13日 上午 09:51
  • Dino Wang 您好

    忘了補上Visual Studio版本是我的失誤, 謝謝您提供的建議

    問題解決了,方法也跟您提供建議的差不多,謝謝:)
    2013年12月13日 上午 09:52