反向字符串和大小写

时间:2013-11-07 15:40:15

标签: java reverse

我需要编写一个类,该类从用户处获取一串文本,反转大小写以及字符串。 例如,如果我输入字符串Mary had a little lamb.
结果将是.BMAL ELTTIL A DAH YRAm

我知道您可以使用StringBuilder来反转字符串本身,但我无法找到一种方法来扭转大小写。

提前感谢您的帮助和建议!

6 个答案:

答案 0 :(得分:3)

交换单个字符大小写的简单方法:

char swapCase(char c)
{
    return Character.isUppercase(c) ? 
           Character.toLowerCase(c) : 
           Character.toUpperCase(c)
}

在你翻转琴弦的同时使用它,沿着路径交换琴盒。

答案 1 :(得分:0)

要“反转”大写,你必须逐字逐句地遍历String并“翻转”它。没有内置的方法可以做到这一点(因为它不是现实生活中任何人都想做的事情:))。

因此,遍历字符串,一次获取一个char,使用Character.isUpperCase()和/或Character.isLowerCase()进行检查,然后使用Character.toUpperCase()和/或Character.toLowerCase()

答案 2 :(得分:0)

您可以使用字符的位信息来确定它是否为大写字母。或者您可以简单地使用String类方法isUpperCase或isLowerCase。

所以你需要测试

if(string.charAt(i).isUpperCase) {
    string.charAt(i).toLowerCase
    simplyReverse(string.charAt(i))
}
else
    simplyReverse(string.charAt(i));

答案 3 :(得分:0)

我会这样做:

String str = "Aasdf";
StringBuilder sb = new StringBuilder();
for(char ch : str.toCharArray()) {
    if (Character.isLowerCase(ch)) {
        sb.append(Character.toUpperCase(ch));
    } else {
        sb.append(Character.toLowerCase(ch));
    }
}
sb.reverse();

答案 4 :(得分:0)

使用char数组:

public static String reverseAndCapitalize(final String input) {
    final char[] charsInput = input.toCharArray();
    final char[] charsOutput = new char[charsInput.length];
    for (int i = 0; i < charsInput.length; i++) {
        final char c = charsInput[i];
        final char output = Character.isUpperCase(c) ? Character.toLowerCase(c) : Character.toUpperCase(c);
        charsOutput[charsInput.length - i - 1] = c;
    }
    return new String(charsOutput);
}

答案 5 :(得分:0)

将此字符串复制到新数组并将新数组转换为UpperCase。

然后检查匹配的案例。如果找到匹配,只需将其转换为LowCase。

伪代码:

reverse(String s) {
    sArray=s.toCharArray();
    copy sArray to tempArray;
    reverse both array;
    tempArray.toUpperCase();
    for(i=0;i<sArray.length; i++) {
      if(tempArray[i]== sArray[i]) {
            sArray[i].toLowerCase();
      }
    }

此代码不使用字符串构建器编写代码。