Java 反向字符串和大小写

Java 反向字符串和大小写,java,reverse,Java,Reverse,我需要编写一个类,从用户那里获取一个文本字符串,反转大小写以及字符串。 例如,如果我输入字符串玛丽有一只小羊羔。 结果将是.BMAL eltil A DAH YRAm 我知道您可以使用StringBuilder来反转字符串本身,但我想不出一种反转大小写的方法 提前感谢您的帮助和建议 要“反转”大小写,您必须逐个字符迭代字符串,然后“翻转”它。没有一种内置的方法可以做到这一点(因为现实生活中的任何人都不想这么做:) 因此,遍历字符串,每次获取一个Character,使用Character.isUp

我需要编写一个类,从用户那里获取一个文本字符串,反转大小写以及字符串。 例如,如果我输入字符串
玛丽有一只小羊羔。

结果将是
.BMAL eltil A DAH YRAm

我知道您可以使用
StringBuilder
来反转字符串本身,但我想不出一种反转大小写的方法

提前感谢您的帮助和建议

要“反转”大小写,您必须逐个字符迭代
字符串,然后“翻转”它。没有一种内置的方法可以做到这一点(因为现实生活中的任何人都不想这么做:)


因此,遍历字符串,每次获取一个
Character
,使用
Character.isUpperCase()
和/或
Character.isLowerCase()
检查它,然后使用
Character.toUpperCase()
和/或
Character.toLowerCase()
交换单个字符大小写的简单方法翻转它:

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

只需在反转字符串时使用此选项,同时交换大小写即可。

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

所以你需要做一些测试

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

我会这样做:

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();
使用字符数组:

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);
}
publicstaticstringreverseandcapitalize(最终字符串输入){
final char[]charsInput=input.toCharArray();
final char[]charsOutput=new char[charsInput.length];
for(int i=0;i
将此字符串复制到新数组,并将新数组转换为大写

然后检查匹配的案例。如果找到匹配项,请将其转换为小写

伪代码:

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();
      }
    }
反向(字符串s){
sArray=s.toCharArray();
将sArray复制到tempArray;
反转两个阵列;
tempArray.toUpperCase();

对于(i=0;i选中每个字符,并使用character.isUpperCase/or character.isLowerCase测试并反转大小写。