如何从末尾的某个位置删除字符串中的字符?

时间:2012-04-20 18:33:51

标签: vb.net string trim

我有一个字符串,例如:

    Dim str as string = xxxxxxxxxxxxxxxxxxxx£xxx£xxxx**£**xxxxxxxxxx

我想要删除£所包围的*Replace始终位于某个位置(例如第11位)。整个字符串很长,总是改变大小,不能从头开始计算。我也不能使用Dim rst As String = str.Remove(str.Length - 11, 1) ,其他位置可能会有相同的字符,我不想删除。


解决方案:

{{1}}

3 个答案:

答案 0 :(得分:1)

如果它始终是最后的第11个字符,你可以这样做......

    Dim strTargetString As String = "xxxYxxxxxxxxxx"
    Dim strTargetString2 As String = "xxxxxxxYxxxxxxxxxx"

    Dim strResult As String = Mid(strTargetString, 1, (Len(strTargetString) - 11)) & Microsoft.VisualBasic.Right(strTargetString, 10)
    Dim strResult2 As String = Mid(strTargetString2, 1, (Len(strTargetString2) - 11)) & Microsoft.VisualBasic.Right(strTargetString, 10)

请注意,String.SubString是一种比Mid更现代的方法,但我会根据偏好和示例使用它。

答案 1 :(得分:1)

编辑:哎呀,我不知道我在第一部分的想法。

第一部分的正确版本是:

str = str.Substring(0, str.Len -13) + str.Substring(str.Len-11);

String.Delete函数也可能存在重载,允许您使用负数来表示字符串末尾的字符数 - 我知道C#等效函数。

答案 2 :(得分:1)

对于使用预见的正则表达式替换操作,这非常简单:

Dim str as String = "xxxxxxxxxxxxxxxxxxxx£xxx£xxxx£xxxxxxxxxx"
Dim str2 as String = Regex.Replace(str, "£(?=.{10}$)", String.Empty)

这将定位单个字符,后跟任意十个字符,然后是字符串的结尾,并将其替换为String.Empty值(如果您愿意,则将其替换为""。)