将字符从小写转换为大写,反之亦然 VB.Net

Jam*_*ter 5 vb.net string lowercase uppercase

四处搜寻,找不到答案。

我的任务是将字符串大写从小写或大写转换,然后将它们交换。

例如:- 输入:- "HeLlO" 和输出:- "hElLo"

我知道我需要使用 for 循环,但无法弄清楚如何单步执行每个字符、检查大小写并在需要时进行切换。

我可以创建一个 for 循环来计数并显示单个字符,或者使用一个简单的 If 语句将整个字符串转换为大写或小写,但是如果我尝试将这两个字符串组合起来,我的逻辑将无法正常工作。

有人能帮忙吗?

Ste*_*art 4

这是一种简单的方法:

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)