2010-07-08 4 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

0

Как я уже сказал, я чувствую себя глупым. Неверный интерпретировал второй параметр, некоторую простую арифметику и престо.

Dim dotIndex As Integer = fileNameCopy.LastIndexOf(".") 
    Dim charCount As Integer = fileNameCopy.Length - dotIndex 
    fileNameCopy = fileNameCopy.Remove(dotIndex, charCount) 
Смежные вопросы