2012-01-24 17 views
12

Esiste già un'implementazione rot13() e unrot13() come parte di una delle librerie Java standard? O devo scrivere io stesso e "reinventare la ruota"?Funzione ROT-13 in java?

Potrebbe sembrare qualcosa di simile:

int rot13 (int c) { 
    if ((c >= 'A') && (c <= 'Z')) 
    c=(((c-'A')+13)%26)+'A'; 

    if ((c >= 'a') && (c <= 'z')) 
    c=(((c-'a')+13)%26)+'a'; 

    return c; 
} 
+0

@BNL Io personalmente preferisco rot104. Richiede un coprocessore dedicato anche se –

+0

@BNL LOL che ha detto che è per scopi di sicurezza? Vedi [this] (http://stackoverflow.com/questions/3928903/what-are-some-practical-applications-of-the-rot13-algorithm) –

+8

A proposito, rot13 è la sua inversa, quindi non lo fai t in realtà bisogno di un metodo "unrot13". –

risposta

16

non credo che sia parte di Java per default, ma ecco un esempio di come è possibile implementare;

public class Rot13 { 

    public static void main(String[] args) { 
     String s = args[0]; 
     for (int i = 0; i < s.length(); i++) { 
      char c = s.charAt(i); 
      if  (c >= 'a' && c <= 'm') c += 13; 
      else if (c >= 'A' && c <= 'M') c += 13; 
      else if (c >= 'n' && c <= 'z') c -= 13; 
      else if (c >= 'N' && c <= 'Z') c -= 13; 
      System.out.print(c); 
     } 
     System.out.println(); 
    } 

} 

Fonte: http://introcs.cs.princeton.edu/java/31datatype/Rot13.java.html

+0

cosa, no mod op? – yshavit

19

potrebbe anche contribuire la mia funzione di salvare altri sviluppatori i preziosi secondi

public static String rot13(String input) { 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < input.length(); i++) { 
     char c = input.charAt(i); 
     if  (c >= 'a' && c <= 'm') c += 13; 
     else if (c >= 'A' && c <= 'M') c += 13; 
     else if (c >= 'n' && c <= 'z') c -= 13; 
     else if (c >= 'N' && c <= 'Z') c -= 13; 
     sb.append(c); 
    } 
    return sb.toString(); 
} 
+0

Grazie per aver dedicato del tempo a mettere questo in un metodo. –

+0

Hai copiato anche http://introcs.cs.princeton.edu/java/31datatype/Rot13.java.html? –