1

我有一个字符串,例如:

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

我想从末尾删除始终位于某个位置(例如第 11 个)的£包围。*整个字符串很长,总是在大小变化,从一开始就无法计数。我也不能使用Replace,我不想删除的其他位置可能有相同的字符。


解决方案:

Dim rst As String = str.Remove(str.Length - 11, 1)
4

3 回答 3

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 更现代的方法,但我出于偏好和示例使用它。

于 2012-04-20T18:42:08.483 回答
1

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

第一部分的正确版本是:

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

函数也可能有一个重载,String.Delete它允许您使用负数来表示从字符串末尾开始的字符数——我知道 C# 等效项确实如此。

于 2012-04-20T18:43:10.193 回答
1

这对于使用前瞻的正则表达式替换操作相当简单:

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

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

于 2012-04-20T18:46:38.227 回答