将字符串中的java char转换为lowerCase / upperCase

时间:2015-05-04 19:00:18

标签: java string character uppercase lowercase

我有一个名为" originalstring"其中包含一个混合大写和小写字符的句子。

我只是想翻转字符串,这样如果一个字符是小写,则将其大写,反之亦然,然后返回它。

我试过这段代码,它返回upperCase中的原始字符串:

for (int i = 0; i < originalString.length(); i++) {
        char c = originalString.charAt(i);

        if (Character.isUpperCase(c)) {
            originalString += Character.toLowerCase(c);

        }

        if (Character.isLowerCase(c)) {
            originalString += Character.toUpperCase(c);

        }

    }
    return originalString;

3 个答案:

答案 0 :(得分:7)

您正在为原始字符串添加字符。此外,这意味着您的for循环永远不会到达for循环的迭代结束,因为originalString.length()也会更改每个循环。这是一个无限循环。

相反,创建一个StringBuilder,在您迭代原始字符串时存储转换后的字符。将其转换为String并在结尾处将其返回。

StringBuilder buf = new StringBuilder(originalString.length());
for (int i = 0; i < originalString.length(); i++) {
    char c = originalString.charAt(i);

    if (Character.isUpperCase(c)) {
        buf.append(Character.toLowerCase(c));

    }
    else if (Character.isLowerCase(c)) {
        buf.append(Character.toUpperCase(c));

    }
    // Account for case: neither upper nor lower
    else {
        buf.append(c);
    }

}
return buf.toString();

答案 1 :(得分:6)

Common-lang提供swapCase功能,请参阅the doc。来自doc:

的示例
StringUtils.swapCase(null)                 = null
StringUtils.swapCase("")                   = ""
StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"

如果您真的想亲自去做,可以查看common-lang StringUtils

的来源

答案 2 :(得分:0)

您可以尝试使用布尔运算进行以下转换,而不是使用现有的实用程序:

大写:

 char upperChar = (char) (c & 0x5f)

小写:

   char lowerChar = (char) (c ^ 0x20)

在你的计划中:

StringBuilder result = new StringBuilder(originalString.length());
        for (int i = 0; i < originalString.length(); i++) {
            char c = originalString.charAt(i);

            if (Character.isUpperCase(c)) {
                result.append((char) (c ^ 0x20));

            }
            else if ((c >= 'a') && (c <= 'z')) {
                result.append((char) (c & 0x5f));

            }
            else {
                result.append(c);
            }

        }
        System.out.println(result);