使用Dart计算字符串中字母的数量

时间:2012-10-28 16:19:15

标签: numbers dart contain

我试着计算句子中有多少字母“a”:“Hello Jordania”。

我发现该功能包含。我这样使用它:

  var phrase = "Hello Jordania;
  var comptenbrdea = phrase.contains('a');
  print(comptenbrdea);

我得到“真实”作为回应。正常你会说,我知道,但我没有找到合适的功能来计算我得到一个多少时间。如果我可以检查每一个字符,我可以用循环做一些事情吗? ......我迷失在http://www.dartlang.org/search.html?cx=011220921317074318178%3Ai4mscbaxtru&ie=UTF-8&hl=en&q=string_scanner ......有人可以帮助我吗?

6 个答案:

答案 0 :(得分:9)

这是一个简单的方法:

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

编辑:测试的字符串是参数,而不是要计算的字符。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

你需要迭代字符并对它们进行计数,上面的注释包含构建直方图的一般函数,但是只计算'a'的版本可能对你有好处。我只会告诉你如何循环字符:

var myString = "hello";
for (var char in myString.splitChars()) {
  // do something
}

答案 3 :(得分:0)

  // 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]}");

答案 4 :(得分:0)

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);
}

答案 5 :(得分:0)

可能不是最好的,但你也可以这样做。

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

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

您需要减去 1,因为它首先拆分为一个列表,然后计算该列表的大小。