2017-08-14 2 views
-1

Ich versuche, die gesamte alphabetische Reihenfolge A-Z -> Z-A umzukehren.Der Versuch, die gesamte alphabetische Reihenfolge in Java zu ersetzen und umzukehren

Das ist was ich bisher habe.

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); 

drucken Dies wird für jeden Buchstaben z-a aus, weshalb ist es ich frage mich ein Weg, jedes einzelne Zeichen von a-z z-a zu ersetzen?

+1

Was Sie als Ausgabe erwarten? '" ABC "' -> '" ZYX "' oder '" ABC "' -> '" CBA "'? – nbrooks

+0

Bitte zeigen Sie die Beispieleingabe und die erwartete Ausgabe an. Deine Frage ist unklar. –

+0

Bitte zeigen Sie, welche Eingabe und Ausgabe erwartet wird –

Antwort

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

Dies wird keine Sortierung tun –

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier und Stellen Sie den Link als Referenz zur Verfügung. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/17024289) – clemens

0

spaltete die Zeichenfolge in ein Array von char, sort nennen, die Ansammlung wieder in umgekehrter Richtung bis in eine Zeichenfolge

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>"); 

Ausgang

yvsnmiieeaaMHD  
<end> 
1

Dies ist eine Lösung für den Fall, Sie verwenden nicht Java 8 mit Streams und Lambdas.

Wenn Sie die Reihenfolge der Zeichen in der ursprünglichen Zeichenfolge ("ABC" ==> "CBA") rückgängig machen möchten, versuchen Sie diesen Code:

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(); 
} 

Wenn Sie ersetzen möchten "A" mit "Z", "B" mit "Y" und so weiter ("ABC" ==> "ZYX") versuchen, diesen Code:

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

Hallo danke für die Eingabe, aber ich bin wirklich auf der Suche nach der gesamten alphabetischen Reihenfolge, so wenn ein Benutzer "ab" gibt es "zy" ausgibt. Jede Zeichenkette kehrt also die Ausgabe von z um -> a –

+0

Also ist 'reverseCharacters' die zu verwendende Methode, wenn Sie Java 7 oder früher verwenden. Wenn Sie Java 8 verwenden, dann macht @Mehdi Javan antwort, was Sie wollen. –

2

Eigentlich ist es sehr schwierig ist es RegEx mit zu entwickeln. Ich schlage vor, mit Strom und 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); 

Und der Ausgang ist:

Sr Nb mznv rh Wzev 
+0

Was passiert mit dem '\ n'? –

+0

@ScaryWombat Das ist weder Groß- noch Kleinbuchstaben, also ist es wieder intakt – nbrooks

+0

@nbrooks Danke –

Verwandte Themen