Java - leet转换器的简单英语

时间:2015-10-29 14:28:55

标签: java

我正在尝试创建一个简单的“英语到leet”转换器,但我不知道使用什么方法将字符串转换为leet。

由于某些原因,当我有字符串english []和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
        }
    }
}

}

2 个答案:

答案 0 :(得分:1)

因为数组英语只列出&#34; A&#34;到&#34; Z&#34;按顺序,你甚至需要遍历英文数组,只需:

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
    }

答案 1 :(得分:0)

它需要两个for循环,你应该使用一个字符数组而不是String数组来实现更好的练习。

以下是解决方案:

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