10
votes

Calculer le numéro d'une lettre dans une chaîne avec DART

J'essaie de calculer combien de lettres "A" dans la phrase: "Bonjour Jordanie".

Je trouve la fonction contient. J'utilise cela comme ceci: xxx

Je reçois "vrai" comme réponse. Normal, vous direz, je sais, mais je ne trouve pas la bonne fonction pour calculer combien de temps je reçois un. Je peux peut-être faire quelque chose avec une boucle si je peux vérifier chaque personnage? ... Je suis perdu sur http: / /www.dartlang.org/search.html?cx=011220921317074318178%3ai4mscbaxtru&e=utf-8&hl=fr&q=string_scanner ... peut-il m'aider?


2 commentaires

Option nucléaire: utilisez REGEX pour supprimer tout ce qui n'est pas un A , puis obtenez la longueur de ce qui reste.


Je trouve la fonction ceci: mappe lettrefrequency (String Text) {String textwoutespaces = text.replaceall ('\ n', ''). remplacement ('' ',' ') .replaceall ('. '', ''); Liste charliste = textwoutpaces.splitches (); charlist.sort ((m, n) => m.compareto (n)); var charmap = {}; pour (var caractère dans charlist) {if (char == 'o') {charmap [caractère] = charmap.puttifabsent (char, () => 0) + 1; }} renvoie charmap; }


6 Réponses :


2
votes

Vous devez itération sur les personnages et les compter, vous commencez ci-dessus contient une fonction générale pour la construction d'un histogramme, mais la version qui ne compte que 'A est probablement bonne pour vous d'écrire. Je vais juste vous montrer comment boucler sur des personnages: xxx


0 commentaires

0
votes
  // count letters
  Map<int,int> counts = new Map<int,int>();
  for (var c in s.charCodes() ) {
    counts[c] = counts.putIfAbsent(c, p()=>0) + 1;
  }
  // print counts
  for (var c in counts.getKeys())
    print("letter ${new String.fromCharCodes([c])} count=${counts[c]}");

0 commentaires

37
votes

Voici un moyen simple de le faire:

void main() {
  print('a'.allMatches('Hello Jordania').length); // 2
}


0 commentaires

3
votes
void main() {
  const regExp = const RegExp("a");
  print(regExp.allMatches("Hello Jordania").length); // 2
}

0 commentaires

1
votes
void main(){
  String str = "yours string";
  Map<String, int> map = {};
  for(int i = 0; i < str.length; i++){
    int count = map[str[i]] ?? 0;
     map[str[i]] = count + 1;
  }
  print(map);
}

1 commentaires

Ajoutez des explications à votre réponse.



0
votes

Probablement pas le meilleur, mais vous pouvez aussi faire quelque chose comme ça.

void main() {
  var a = "ht://adfd//.coma/";

  int count = a.split("t").length - 1;
  print(count);
}


0 commentaires