Bonjour ,
voila j'aimerais savoir comment faire pour compter le lettre d'un string sous java..
Merci bien d'avance
Version imprimable
Bonjour ,
voila j'aimerais savoir comment faire pour compter le lettre d'un string sous java..
Merci bien d'avance
Pense à utiliser la Javadoc.Code:
1
2 public int length()
Merci pour votre reponse,
mais la chaine peut comporter des numéros ,de caractères spéciaux, des lettres,...
et je veux compter les lettres cetout
Ah pardon, je n'ai pas compris ce que tu voulais.
Ceci dit, en consultant la Javadoc, tu peux trouver la méthode charAt qui te permet d'extraire un caractère.
Tu n'as plus qu'à parcourir ta chaine et tester le caractère extrait.
j'essayé mais je ne sait comment comparer chaque caractere avec 26 lettre, pour me comprendre voilà notre essai:
Code:
1
2
3
4 for (int i=0;i<ch.length();i++) { char x =ch.charAt(i); char xx = x.toLowerCase()
Comme ca, ca devrai marcher.Code:
1
2
3
4
5
6
7 int nbLettre = 0; for (int i = 0; i < ch.length(); i++){ if(!Characters.isDigit(ch.charAt[i])){ nbLettre++; } }
Autre solution:
48 correspond au code du clavier du 0 et 57 du 9.Code:
1
2
3
4
5
6
7
8
9 int nbLettre = 0; char test; for(int i = 0; i < ch.length(); i++){ test = ch.charAt[i]; if((test < 48) && (test > 57){ nbLettre++; } }
Doit y avoir des soluces plus élégante pour faire ça... je suis un peu brute :ccool:
En y regardant de plus près, y a beaucoup plus simple dans la classe Character, tu devrai regarder la fonction isLetter() qui fait exactement ce que tu veux. Mes solutions consideres les caracteres speciaux comme des lettres et c'est pas ce que tu veux.
Salut,
Cordialement,Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 //import java.util.regex.Pattern; //import java.util.regex.Matcher; int nbreLettres = 0; String chaine = "Abcd efg 123 hij Zywv é à è ê"; Pattern pattern = Pattern.compile("[a-z[A-Z][é][à][è][ê]]"); Matcher matcher = pattern.matcher(chaine); while(matcher.find()) { nbreLettres++; } System.out.println("\nNombre de lettres: " + nbreLettres);
Dan
Merci bien,
le problème maintenant est résolu
:ccool::ccool:
Marchait aussi en écrivant les lettres directement.Code:
1
2
3
4
5
6
7
8
9
10
11 int nbLettre = 0; char test; for(int i = 0; i < ch.length(); i++){ test = ch.charAt[i]; if( (test >= 'a' && test <= 'z') || (test >= 'A' && test <= 'Z')) { nbLettre++; } }
Alors, attention, il y a la méthode isLetter(), oui, mais il faut bien vérifier si c'est ce qu'on veut.Citation:
En y regardant de plus près, y a beaucoup plus simple dans la classe Character, tu devrai regarder la fonction isLetter() qui fait exactement ce que tu veux.
Ça vérifie si c'est une lettre au sens Unicode. Ça inclut les lettres accentuées, et c'est bien, mais aussi les lettres grecques, russes, arabes, hébreuses, le chinois, le japonais, les symboles mathématiques sous forme de lettres...
Bref, passablement plus que de A à Z. Attention à s'en rappeler.
Ca renvoi bien 14, soit le nombre de lettre, neanmoins l'utilisation du pattern/matcher semble bien plus propre (quoique que peut etre plus difficile a saisir)Code:
1
2
3
4
5
6
7
8
9 int nbLettre = 0; String ch = "'Abcd @efg &123 + -_hij Zywv)"; for (int i = 0; i < ch.length(); i++){ if(Character.isLetter(ch.charAt(i))){ nbLettre++; } } System.out.println(nbLettre);