感觉愚蠢,我试图在最后一次出现“。”后删除子字符串。代码如下:
Dim dotIndex As Integer = fileNameCopy.LastIndexOf(".")
Dim dummy As Integer = fileNameCopy.Length - 1
fileNameCopy = fileNameCopy.Remove(dotIndex, dummy)
当我调试时,我得到一个超出范围异常的参数,第二个,counter,参数;在这种情况下是假的。我不确定为什么;我的测试字符串的总长度是72,调试时,dotIndex是68,长度是71,所以我在字符串的范围内,我不知道为什么我得到这个错误,任何帮助都是赞赏。
答案 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)
Dim dotIndex As Integer = fileNameCopy.LastIndexOf(".")
Dim charCount As Integer = fileNameCopy.Length - dotIndex
fileNameCopy = fileNameCopy.Remove(dotIndex, charCount)