删除子字符串时出错

时间:2010-07-08 17:40:50

标签: vb.net

感觉愚蠢,我试图在最后一次出现“。”后删除子字符串。代码如下:

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

当我调试时,我得到一个超出范围异常的参数,第二个,counter,参数;在这种情况下是假的。我不确定为什么;我的测试字符串的总长度是72,调试时,dotIndex是68,长度是71,所以我在字符串的范围内,我不知道为什么我得到这个错误,任何帮助都是赞赏。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

像我说的那样,我感到愚蠢。误解了第二个参数,一些简单的算术和presto。

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