You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Dart中统计字符串指定字符出现次数的实现方法

Dart中统计字符串指定字符出现次数的实现方法

嘿,刚入门Dart遇到这种字符串处理问题太正常啦!我给你分享几种实用的方法,帮你统计指定字符在字符串里的出现次数,就拿你说的统计'e'的次数举例~

方法一:手动遍历计数(最直观,适合新手理解)

这种方法就是逐个检查字符串里的每个字符,匹配到目标字符就累加计数,逻辑非常清晰,适合刚学Dart的朋友理解底层逻辑:

// 定义统计函数
int countTargetChar(String inputStr, String targetChar) {
  int count = 0;
  // 遍历字符串的每个字符
  for (int i = 0; i < inputStr.length; i++) {
    if (inputStr[i] == targetChar) {
      count++;
    }
  }
  return count;
}

// 调用示例
void main() {
  String testWord = "Hello, everyone!";
  int eCount = countTargetChar(testWord, 'e');
  print("字符'e'出现的次数:$eCount"); // 输出:字符'e'出现的次数:4
}

方法二:利用split方法快速实现(简洁高效)

Dart的字符串自带split方法,我们可以用目标字符作为分隔符把字符串拆分成数组,数组的长度减一就是目标字符的出现次数,代码非常简洁:

int countTargetCharWithSplit(String inputStr, String targetChar) {
  return inputStr.split(targetChar).length - 1;
}

// 调用示例
void main() {
  String testWord = "Hello, everyone!";
  print("字符'e'出现的次数:${countTargetCharWithSplit(testWord, 'e')}"); // 输出4
}

原理很简单:用'e'分割"Hello, everyone!"会得到["H", "llo, ", "v", "ryon", "!"],数组长度是5,减1就得到'e'的出现次数4。

方法三:正则表达式匹配(适合复杂场景)

如果需要更灵活的匹配规则(比如忽略大小写、匹配特殊字符),正则表达式会是很好的选择:

int countTargetCharWithRegex(String inputStr, String targetChar) {
  // 用RegExp.escape处理目标字符,避免正则特殊字符(比如*.+等)干扰
  RegExp charRegex = RegExp(RegExp.escape(targetChar));
  // 找到所有匹配的结果
  Iterable<Match> matches = charRegex.allMatches(inputStr);
  return matches.length;
}

// 调用示例
void main() {
  String testWord = "Hello, Everyone!";
  // 如果要忽略大小写统计,只需要给正则加caseSensitive: false参数
  RegExp caseInsensitiveRegex = RegExp(RegExp.escape('e'), caseSensitive: false);
  int totalECount = caseInsensitiveRegex.allMatches(testWord).length;
  print("大小写'e'总共出现的次数:$totalECount"); // 输出5
}

小提示

如果需要忽略大小写统计字符,比如同时统计'E'和'e',可以:

  • 方法一里把判断条件改成inputStr[i].toLowerCase() == targetChar.toLowerCase()
  • 方法三里给正则表达式添加caseSensitive: false参数

备注:内容来源于stack exchange,提问作者Okan Dağdelen

火山引擎 最新活动