删除尾随文本(多个字符)

Remove Trailing Text (Multiple Characters)

在 VB.NET 中,我想从变量的末尾删除整个字符串,而不是单个字符。执行此操作的最佳方法是什么?

比如我的字符串文本如下:
杰克口袋里带着 3.00 离开,回来时只带了 2.00

我想从文本末尾而不是中间删除 .00。我希望结果是:
杰克口袋里带着 3.00 离开,但只带回 2

如果我将 TrimEnd 与“.”一起使用和“0”,我会得到如下不正确的修剪:
某物。 -> 某事(不正确)
任意 0 -> 任意(不正确)

我只想从末尾删除“.00”,而不是“.”、“.0”或“0”。

这容易做到吗?

希望对您有所帮助

要在字符串末尾删除:

Private Function removeFromEnd(completeString As String, searchedString As String)
    If Len(completeString) > 0 Then
        Return completeString.Remove(completeString.LastIndexOf(searchedString))
    End If
    Return ""
End Function

如果您想删除搜索字符串的特定索引或将其替换为您的字符串:

    Private Function replaceFromStringInSpecificIndex(completeString As String, searchedString As String, replaceString As String, whichElement As Integer)
        Dim result As String = ""

        If Len(completeString) > 0 Then
            Dim elements() As String = completeString.Replace(searchedString, Char.MinValue).Split(Char.MinValue)
            For i As Integer = 0 To elements.Length - 1
                If Len(elements(i)) > 0 Then
                    result &= elements(i)
                    result &= IIf(i = whichElement, replaceString, searchedString)
                End If
            Next
        End If

        Return result

    End Function

用法:

要删除字符串末尾

Dim removedFromEnd As String = removeFromEnd("Jack left with 3.00 in his pocket but returned with only 2.00", ".00")

remove/replace搜索字符串的特定索引(这里第三个元素替换为OPSSSSS….)

Dim replacedSpecificIndex As String = replaceFromStringInSpecificIndex("Jack left with 3.00 in his pocket but returned with only 2.00 Or again Jack left with 3.00 in his pocket but returned with only 2.00", ".00", " OPSSSSSSS Replaced ", 2)

要从字符串的末尾删除特定数量的字符:

Private Function removeFromEndXChars(completeString As String, nrChars As Integer)
    If Len(completeString) > nrChars Then
        Return completeString.Remove(completeString.Length - nrChars)
    End If
    Return ""
End Function

用法:

 Dim sfinal As String = removeFromEndXChars("Jack left with 3.00 in his pocket but returned with only 2.00", ".00".Length)

如果要从较长字符串的末尾删除较短的字符串,您需要先确定较短的字符串是否确实出现在较长字符串的末尾。您可以使用 EndsWith 方法来做到这一点。如果确实出现,您可以使用 SubString 方法将其删除。

这是一个函数,可以从较长字符串的末尾删除任何较短的字符串。如果较短的字符串没有出现在较长字符串的末尾,则返回整个较长的字符串。

Function RemoveFromEnd(fullString As String, removeString As String) As String
    If fullString.EndsWith(removeString) Then Return fullString.Substring(0, fullString.Length - removeString.Length)
    Return fullString
End Function

您可以这样调用该函数:

Dim someString = "Jack left with 3.00 in his pocket but returned with only 2.00"
somestring = RemoveFromEnd(someString, ".00")

这将避免您在使用 TrimEnd 时遇到的两个问题。