2010-07-08 73 views
0

感覺啞巴,我試圖刪除最後一次出現「。」後的子字符串。代碼如下:刪除子字符串時出錯

 Dim dotIndex As Integer = fileNameCopy.LastIndexOf(".") 
     Dim dummy As Integer = fileNameCopy.Length - 1 
     fileNameCopy = fileNameCopy.Remove(dotIndex, dummy) 

當我調試時,我得到一個參數超出範圍異常第二,計數器,參數;假人在這種情況下。我不知道爲什麼;我的測試字符串的總長度是72,當調試時,dotIndex是68,長度是71,所以我在字符串範圍內,我不知道爲什麼我得到這個錯誤,任何幫助是讚賞。

回答

3

第二個參數是不是你的子串想的最後一個索引刪除,而是你的起始索引後取出的字符數。

這應該工作:

Dim myString as String = "abc.efg" 
Dim dotIndex As Integer = myString.LastIndexOf(".") 
Dim dummy As Integer = myString.Length - dotIndex 
myString = myString.Remove(dotIndex, dummy) 

你也可以這樣做

Dim myString as String = "abc.efg" 
Dim dotIndex As Integer = myString.LastIndexOf(".") 
myString = myString.Remove(dotIndex) 

那個在dotIndex位置後,將刪除所有字符。

或者你可以去更簡單的方法。根據您的變量名稱判斷,您只是想從文件名中刪除擴展名。試試這個:

fileNameCopy = Path.GetFileNameWithoutExtension(fileNameCopy) 
+0

+1保存到最後! – MarkJ 2010-07-08 18:27:40

0

就像我說的,我感覺很愚蠢。誤解了第二個參數,一些簡單的算術和presto。

Dim dotIndex As Integer = fileNameCopy.LastIndexOf(".") 
    Dim charCount As Integer = fileNameCopy.Length - dotIndex 
    fileNameCopy = fileNameCopy.Remove(dotIndex, charCount)