2013-10-09 61 views
1

在Visual Basic .NET(2010)中,我有此字符串類型也包含Visual Basic代碼。我試圖用「正則表達式」從如何應用此正則表達式規則

所以CINT(整數),以取代所有的整數:

Dim I As Integer = 0 

要:

Dim I As Integer = CInt(0) 

這就是我想要的正則表達式使用:http://regex101.com/r/rZ4sJ8

/\b(\d+)\b/CInt(\1) 

我只是不知道如何應用它。我試過Regex.Replace()和Regex.Matches等等,但似乎沒有什麼關鍵。我要麼得到一個空白的結果或者一個什麼也沒有,甚至類似於輸入

回答

2

在.NET中,您需要將搜索模式從置換方式分開,這樣的:

Dim input As String = "Dim I As Integer = 0" 
Dim pattern As String = "\b(\d+)\b" 
Dim replacement As String = "CInt($1)" 
Dim output As String = Regex.Replace(input, pattern, replacement) 
+1

這個工作完美,你真的明白我想達到的目標! –

0

像這樣的東西是你所需要的:

Dim value As String = "Dim I As Integer = 13" 
    Dim pattern As String = "\b(\d+)\b" 
    Dim matches As MatchCollection = Regex.Matches(value, pattern) 

    ' Loop over matches. 
    For Each m As Match In matches 
     ' Loop over captures. 
     For Each c As Capture In m.Captures 
      ' Replace original string 
      value = value.Substring(0, c.Index) + "CInt(" + c.Value.ToString + ")" 
     Next 
    Next 

雖然我會問,爲什麼你需要做的是更換擺在首位!

+0

在這種情況下,我需要更換他們原有的字符串是有點難以在做情況下,他們的名字中有整數的類或子類。因此,正則表達式。 –

+0

我很感激幫助,但誠實地說,這不關你的事。在我看來,這是非常不專業的。雖然你提供的代碼給了我錯誤,而你編輯的正則表達式卻毀了它。 –

+0

我想你可能能夠以另一種方式解決你的「問題」。如果你解釋爲什麼你需要這樣做;有人可能會有更好的建議,如何去做(你找到的東西和你要替換的東西之間沒有功能上的區別) –