这是一种简单的方法:
Public Function InvertCase(input As String) As String
Dim output As New StringBuilder()
For Each i As Char In input
If Char.IsLower(i) Then
output.Append(Char.ToUpper(i))
ElseIf Char.IsUpper(i) Then
output.Append(Char.ToLower(i))
Else
output.Append(i)
End If
Next
Return output.ToString()
End Function
Run Code Online (Sandbox Code Playgroud)
它只是循环遍历原始字符串中的每个字符,检查它是什么情况,修复它,然后将该固定字符附加到新字符串(通过对象StringBuilder)。
正如 Neolisk 在下面的评论中建议的那样,您可以通过创建另一种转换单个字符的方法来使其更清晰,如下所示:
Public Function InvertCase(input As Char) As Char
If Char.IsLower(input) Then Return Char.ToUpper(input)
If Char.IsUpper(input) Then Return Char.ToLower(input)
Return input
End Function
Public Function InvertCase(input As String) As String
Dim output As New StringBuilder()
For Each i As Char In input
output.Append(InvertCase(i))
Next
Return output.ToString()
End Function
Run Code Online (Sandbox Code Playgroud)
使用相同的函数InvertCase(Char),您还可以使用 LINQ,如下所示:
Public Function InvertCase(input As String) As String
Return New String(input.Select(Function(i) InvertCase(i)).ToArray())
End Function
Run Code Online (Sandbox Code Playgroud)