I am using TrimEnd to remove certain characters from the end of a string. Initially I thought this would work:
Dim strNew As String = "EmployeesSickness Entitlement.rpt"
Dim strTrim As String = "Sickness Entitlement.rpt"
Console.WriteLine(strNew.TrimEnd(strTrim)) '<- Doesn't work
But TrimEnd only works for an array of chars or a single char string, so I tried this:
Dim strNew As String = "EmployeesSickness Entitlement.rpt"
Dim strTrim As String = "Sickness Entitlement.rpt"
Dim arrChars As Char()
ReDim arrChars(strTrim.Length)
For i As Integer = 0 To strTrim.Length - 1
arrChars(i) = strTrim.Substring(i, 1)
Next
Console.WriteLine(strNew.TrimEnd(arrChars)) '<- Employees
This works fine until I add in the slash:
Dim strNew As String = "EmployeesSickness Entitlement.rpt"
Dim strTrim As String = "Sickness Entitlement.rpt"
Dim arrChars As Char()
ReDim arrChars(strTrim.Length)
For i As Integer = 0 To strTrim.Length - 1
arrChars(i) = strTrim.Substring(i, 1)
Next
Console.WriteLine(strNew.TrimEnd(arrChars)) '<- Employ
This now outputs: Employ
Is this somehow by design? It seems strange to me. The solution to my problem is do do something like:
If strNew.EndsWith(strTrim) Then
Console.WriteLine(strNew.Substring(0, strNew.LastIndexOf(strTrim)))
End If
Which is both simpler and also works, but what is happening above?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…