2017-08-14 79 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謝謝 –