Java >> Java Tutorial >  >> Tag >> char

So erhalten Sie Indizes von Zeichen in der Zeichenfolge

Ich möchte Vokalpositionen in der Zeichenfolge finden. Wie kann ich diesen Code verkürzen?

Ich habe die Methode contains und indexOf ausprobiert, konnte es aber nicht.

        String inputStr = "Merhaba";

        ArrayList<Character> vowelsBin = new ArrayList<Character>(Arrays.asList('a', 'e', 'i', 'o', 'u'));
        ArrayList<Integer> vowelsPos = new ArrayList<Integer>();

        for (int inputPos = 0; inputPos < inputStr.length(); inputPos = inputPos + 1)
        for (int vowelPos = 0; vowelPos < vowelsBin.size(); vowelPos = vowelPos + 1)
        if (inputStr.charAt(inputPos) == vowelsBin.get(vowelPos)) vowelsPos.add(inputPos);

        return vowelsPos;

Antwort

Ich nehme an, Sie möchten m2rh5b7 erhalten aus Ihrer Eingabezeichenfolge Merhaba basierend auf Ihrem Code, dann funktioniert das Folgende gut,

        String input = "Merhaba";
        StringBuilder output = new StringBuilder();
        for(int i = 0; i < input.length(); i++){
           char c = input.toLowerCase().charAt(i);
           if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){
               output.append(i+1);
           } else {
               output.append(c);
           }
        }
        System.out.println(output);  // prints --> m2rh5b7

Oder wenn Sie nur die Position der Vokale wollen, ist das Folgende in Ordnung,

        String input = "Merhaba";
        for(int i = 0; i < input.length(); i++){
           char c = input.toLowerCase().charAt(i);
           if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){
               System.out.println(i);
           }
        }

Sie können auch Regex verwenden, beziehen Sie sich bitte oben auf Alias.


Java-Tag