我在VBA中編寫了代碼,我試圖將它轉移到Vb.Net,但我不確定我的工作。將Right和Instr轉換爲vb.net子串
VBA代碼(適用於vb.net):
Dim stringDate$ = "something happens: 03/12/2014 11:00"
Dim C$ = Trim(Strings.Right(stringDate, Len(stringDate) - InStr(1, stringDate, ":", vbTextCompare)))
Vb.Net代碼:
Dim C$ = stringDate.substring(stringDate.length - stringDate.indexof(":"), stringDate.length - (stringDate.length -stringDate.indexof(":"))).trim()
但是更長的代碼似乎並不像一個改進。不是嗎?
什麼是正確的方法?
如果您對'Len'和'Instr'等傳統VB函數感到滿意,那就使用它們。就我個人而言,我不喜歡它們,因爲它們中的很多都涉及到Object的裝箱參數,沒有其他好處。 「更長的代碼」比拳擊更有意義。 – Plutonix
stringDate.Substring(stringDate.IndexOf(「:」)+ 1).Trim()更短,不會彈出。 –
在進行.Net開發時,出於幾個原因,我更喜歡字符串之外的方法。首先,VB版本不是實例方法,所以他們必須檢查傳入的字符串是否爲空。如果你已經知道你的字符串不爲空,這可能是很多不必要的檢查。更關心的問題是像InStr這樣的方法使用單基索引而不是零基索引。這對於零基礎的.Net字符串函數來說效果不佳。許多開發人員也不期望得到一個基礎的結果。 – Scott