2017-08-14 40 views
-1

我试图颠倒整个字母顺序A-Z→Z-A。试图替换并颠倒Java中的整个字母顺序

这是我到目前为止。

public class Program { 
    public static voud main(String[] args) { 

     String text = "Hi My name is Dave\n"; 

     text = text.replaceAll("[a-z ]",["z-a"]); 


     System.out.println(text); 

这将打印出的Z一为每一个字母,这就是为什么我想知道有没有办法从A-Z替换每一个字符a到z-一个?

+1

什么是你期待作为输出? ''“ABC”' - >'“ZYX”'或者'“ABC”' - >'“CBA”'? – nbrooks

+0

请显示样本输入和预期输出。你的问题不清楚。 –

+0

请显示预期的输入和输出 –

回答

-1
new StringBuilder(text).reverse().toString() 
+0

这不会做任何排序 –

+0

虽然此链接可能回答问题,但最好在此包含答案的基本部分,提供链接供参考。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/评论/低质量帖/ 17024289) – clemens

0

分割字符串成字符数组,调用排序,生成备份反向为一个字符串

String text = "Hi My name is Dave\n"; 

    char arr [] = text.toCharArray(); 
    Arrays.sort(arr); 

    for (int x = arr.length - 1; x >= 0; x--) { 
     System.out.print(arr[x]); 
    } 
    System.out.print("<end>"); 

输出

yvsnmiieeaaMHD  
<end> 
1

这是的情况下的解决方案你没有使用Java 8与流和Lambdas。如果您想更换“A”与

public static String reverseString(final String original) { 
    StringBuffer reverse = new StringBuffer(); 

    for (int i = original.length() - 1 ; i >= 0 ; i--) 
     reverse.append(original.charAt(i)); 

    return reverse.toString(); 
} 

如果你想扭转字符的顺序在原始字符串(“ABC” ==>“CBA”),试试这个代码“Z”, “B” 与 “Y” 等( “ABC” ==> “ZYX”)试试这个代码:

public static String reverseCharacters(final String original) { 
    final int UPPERCASE_A = 'A'; 
    final int UPPERCASE_Z = 'Z'; 
    final int LOWERCASE_A = 'a'; 
    final int LOWERCASE_Z = 'z'; 

    StringBuffer reverse = new StringBuffer(); 
    char character = ' '; 

    for (int i = original.length() - 1 ; i >= 0 ; i--) { 
     int charInt = original.charAt(i); 
     if (Character.isUpperCase(original.charAt(i)) { 
     reverse.append((char)(UPPERCASE_Z - charInt + UPPERCASE_A)); 
     } else if (Character.isUpperCase(original.charAt(i))) { 
     reverse.append((char)(LOWERCASE_Z - charInt + LOWERCASE_A); 
     } else { 
     reverse.append(original.charAt(i)); 
     } 
    } 

    return reverse.toString(); 
} 
+0

嗨,感谢您的输入,但我真的想扭转整个字母顺序,所以当用户输入“ab”时,输出“zy”。因此,每个字符串都会反转z的输出 - > –

+0

因此,如果您使用的是Java 7或更早版本,则使用“reverseCharacters”。如果你正在使用Java 8,那么@Mehdi Javan的答案就是你想要的。 –

2

其实,这是非常困难的它使用正则表达式来开发。我建议使用流和Lambda:

String text = "Hi My name is Dave\n"; 
    int[] chars = text.chars() 
      .map(ch -> Character.isUpperCase(ch) ? 25 - ch + 'A' * 2 : 
        Character.isLowerCase(ch) ? 25 - ch + 'a' * 2 : ch) 
      .toArray(); 
    text = new String(chars, 0, chars.length); 
    System.out.println(text); 

,输出是:

Sr Nb mznv rh Wzev 
+0

'\ n'会发生什么? –

+0

@ScaryWombat既不是大写也不是小写,所以它是完整的返回 – nbrooks

+0

@nbrooks谢谢 –