2015-10-29 94 views
2

我想創建一個簡單的「英語leet」轉換器,但我不知道要使用什麼方法來將字符串轉換爲leet。Java - 簡單的英語leet轉換器

,由於某種原因,我不能使用equalsIgnoreCase時,我有串英文[]和萊特[]

public static void main(String[] args) { 
    String english[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; 
    String leet[] = {"4", "8", "(", ")", "3", "}", "6", "#", "!", "]", "X", "|", "M,", "N", "0", "9", "Q", "2", "Z", "7", "M", "V", "W", "X", "J", "Z"}; 
    String result = ""; 

    Scanner sc = new Scanner(System.in); 
    String Str = sc.nextLine(); 

    for (int i = 0 ; i < english.length ; i++) {  

     if (Str.equalsIgnoreCase(english)) { 
     // convert to leet 
     } 
    } 
} 

}

+1

使用Map作爲Map 。第一個通用字母將是您的正常字母表,第二個字母表示leet字符。您現在可以簡單地替換因地圖而引起的每個'char'。 – SomeJavaGuy

回答

0

它需要兩個for循環,你應該使用字符數組而不是字符串數組,以便更好地實踐。

這裏是解決方案:

char english[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; 
char leet[] = {'4', '8', '(', ')', '3', '}', '6', '#', '!', ']', 'X', '|', 'M', 'N', '0', '9', 'Q', '2', 'Z', '7', 'M', 'V', 'W', 'X', 'J', 'Z'}; 
String result = ""; 

Scanner sc = new Scanner(System.in); 
String Str = sc.nextLine();//SHIVAM 
for (int i = 0 ; i < Str.length() ; i++) {  

    char tmp = Str.charAt(i); 
    for(int j = 0 ; j < english.length ; j++){ 
     if(tmp==english[j]) 
      result += leet[j]; 
    } 
} 
System.out.println(result);//Z#!V4M 
+0

感謝您的幫助,我可以在什麼地方放入equalsIgnoreCase? –

+0

equalsIgnoreCase是應用於字符串的方法,在此解決方案中,我們沒有比較字符串。 – Shivam

1

,數組英語只是列出了「A」,以便「Z」,你甚至可以通過英語陣列需要循環,只是做:

Scanner sc = new Scanner(System.in); 
    String Str = sc.nextLine().toUpperCase(); // convert all to upper case so that you don't need equalsIgnoreCase() 
    for (int i = 0; i < Str.length(); ++i) { 
     result +=leet[Str.charAt(i) - 'A']; // Str.charAt(i) - 'A' this will give you the correct index in leet 
    } 
+0

它現在有效,謝謝你的幫助 –

+0

這是一個很好的解決方案! – Shivam

+0

@StephanRogers我很高興它有幫助。 – Bon