web-dev-qa-db-fra.com

Trouver les positions d'un personnage dans une chaîne

Comment trouver un caractère dans une String et imprimer sa position sur toute la chaîne? Par exemple, je veux trouver les positions de 'o' dans cette chaîne: "you are awesome honey" et obtenir la réponse = 1 12 17.

J'ai écrit ça, mais ça ne marche pas: 

public class Pos {
    public static void main(String args[]){
        String string = ("You are awesome honey");
        for (int i = 0 ; i<string.length() ; i++)
        if (string.charAt(i) == 'o')
        System.out.println(string.indexOf(i));
    }
}
8
Rastin Radvar

Tu avais presque raison. La question est votre dernière ligne. Vous devriez imprimer i au lieu de string.indexOf(i):

public class Pos{
    public static void main(String args[]){
        String string = ("You are awesome honey");
        for (int i = 0 ; i<string.length() ; i++)
        if (string.charAt(i) == 'o')
        System.out.println(i);
    }
}
4
Etienne Miret

Voici la fonction pour trouver toutes les positions de caractères spécifiques dans une chaîne

public ArrayList<Integer> findPositions(String string, char character) {
    ArrayList<Integer> positions = new ArrayList<>();
    for (int i = 0; i < string.length(); i++){
        if (string.charAt(i) == character) {
           positions.add(i);
        }
    }
    return positions;
}

Et l'utiliser par

ArrayList<Integer> result = findPositions("You are awesome honey",'o'); 
// result will contains 1,12,17
0
Linh

Ici en Java:

    String s = "you are awesome honey";
    char[] array = s.toCharArray();
    for(int i = 0; i < array.length; i++){
        if(array[i] == 'o'){
            System.out.println(i);
        }   
    }
0
Lukas Warsitz

Commencez par le premier caractère et parcourez tous les personnages jusqu'à la fin. À chaque étape, vérifiez si le caractère est un "o". Si c'est le cas, imprimez la position.

0
Weyland Yutani
    static ArrayList<String> getCharPosition(String str, char mychar) {
            ArrayList<String> positions = new ArrayList<String>();

            if (str.length() == 0)
                return null;

            for (int i = 0; i < str.length(); i ++) {
                if (str.charAt(i) == mychar) {
                    positions.add(String.valueOf(i));
                }
            }

            return positions;
    }

String string = ("You are awesome honey");

ArrayList<String> result = getCharPosition(string, 'o');

for (int i = 0; i < result.size(); i ++) {
    System.out.println("char position is: " + result.get(i));
}

Sortie:

char position is: 1
char position is: 12
char position is: 17