12

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

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

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

我得到“真”作为回应。正常你会说,我知道,但我找不到正确的函数来计算我得到 a 的次数。如果我可以检查每个字符,我也许可以用循环做一些事情?...我迷路了http://www.dartlang.org/search.html?cx=011220921317074318178%3Ai4mscbaxtru&ie=UTF-8&hl=en&q=string_scanner ...有人可以帮我吗?

4

6 回答 6

46

这是一个简单的方法:

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

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

于 2012-10-28T21:59:20.437 回答
4
void main() {
  const regExp = const RegExp("a");
  print(regExp.allMatches("Hello Jordania").length); // 2
}
于 2012-11-01T14:16:06.427 回答
2

您需要对字符进行迭代并对其进行计数,您上面的评论包含用于构建直方图的通用函数,但仅计算 'a' 的版本可能对您编写有好处。我将向您展示如何循环字符:

var myString = "hello";
for (var char in myString.splitChars()) {
  // do something
}
于 2012-10-28T18:05:21.777 回答
2
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);
}
于 2019-12-23T15:15:02.353 回答
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]}");
于 2012-10-28T19:05:16.927 回答
0

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

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

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

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

于 2021-05-18T12:50:45.023 回答