如何在Java中反转字符串的大小写?

2022-09-03 03:28:37

我想更改一个字符串,以便所有大写字符变为小写,所有小写字符变为大写。数字字符将被忽略。

所以“AbCdE123”变成了“aBcDe123”

我想一定有一种方法可以遍历字符串并翻转每个字符,或者可能是一些可以做到这一点的正则表达式。


答案 1

Apache Commons StringUtils有一个swapCase方法。


答案 2

我不相信有任何内置的东西来做到这一点(这是相对不寻常的)。不过,这应该可以做到:

public static String reverseCase(String text)
{
    char[] chars = text.toCharArray();
    for (int i = 0; i < chars.length; i++)
    {
        char c = chars[i];
        if (Character.isUpperCase(c))
        {
            chars[i] = Character.toLowerCase(c);
        }
        else if (Character.isLowerCase(c))
        {
            chars[i] = Character.toUpperCase(c);
        }
    }
    return new String(chars);
}

请注意,这不会像 String.toUpperCase/String.toLowerCase 那样进行特定于区域设置的更改。它也不处理非 BMP 字符。