Vb.net 删除子字符串时出错

Vb.net 删除子字符串时出错,vb.net,Vb.net,我觉得自己很笨,试图在上次出现“.”之后删除一个子字符串。代码如下: Dim dotIndex As Integer = fileNameCopy.LastIndexOf(".") Dim dummy As Integer = fileNameCopy.Length - 1 fileNameCopy = fileNameCopy.Remove(dotIndex, dummy) 当我调试时,我得到了第二个计数器参数的参数超出范围异常;在这种情况下是

我觉得自己很笨,试图在上次出现“.”之后删除一个子字符串。代码如下:

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

当我调试时,我得到了第二个计数器参数的参数超出范围异常;在这种情况下是虚拟的。我不知道为什么;我的测试字符串的总长度是72,调试时,dotIndex是68,长度是71,所以我在字符串的范围内,我不知道为什么会出现这个错误,非常感谢您的帮助。

就像我说的,我觉得自己很笨。误解了第二个参数,一些简单的算法和预处理

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

就像我说的,我觉得自己很笨。误解了第二个参数,一些简单的算法和预处理

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

第二个参数不是要删除的子字符串的最后一个索引,而是开始索引后要删除的字符数

这应该起作用:

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)
这将删除位于点索引位置的字符之后的所有字符

或者你可以走一条更简单的路。根据变量名判断,您只是试图从文件名中删除扩展名。试试这个:

fileNameCopy = Path.GetFileNameWithoutExtension(fileNameCopy)

第二个参数不是要删除的子字符串的最后一个索引,而是开始索引后要删除的字符数

这应该起作用:

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)
这将删除位于点索引位置的字符之后的所有字符

或者你可以走一条更简单的路。根据变量名判断,您只是试图从文件名中删除扩展名。试试这个:

fileNameCopy = Path.GetFileNameWithoutExtension(fileNameCopy)