You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter移动端应用求助:含字母"A"的单词统计功能失效

问题排查与功能实现

核心问题分析

你当前的代码逻辑仅统计了输入文本按空格分割后的总单词数,完全未实现统计包含字母"A"(含大小写)的单词数量的需求,同时存在以下细节缺陷:

  • 用split(" ")分割文本时,连续空格会生成空字符串,导致单词数统计失真
  • 未处理字母大小写,比如单词"apple"里的小写"a"会被忽略

修正后的代码实现

以下是调整后的完整代码,核心修改了onChanged回调内的计数逻辑:

import 'package:flutter/material.dart';

void main() => runApp(Myapp());

class Myapp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.blueAccent,
          title: Text(
            "Laboratorul 2",
            style: TextStyle(
              color: Colors.white,
            ),
          ),
        ),
        body: WordCounter(),
      ),
    );
  }
}

class WordCounter extends StatefulWidget {
  @override
  _WordCounter createState() => _WordCounter();
}

class _WordCounter extends State<WordCounter> {
  int _wordcount = 0;
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          Padding(
            padding: EdgeInsets.all(8),
            child: TextField(
              decoration: InputDecoration(
                  labelText: "Introdu textul aici...",
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.circular(5.0),
                  )),
              onChanged: (String str) {
                int temp = 0;
                // 按任意空白字符分割文本,过滤空字符串得到有效单词列表
                List<String> words = str.split(RegExp(r'\s+')).where((word) => word.isNotEmpty).toList();
                // 遍历单词,统计包含A/a的数量
                for (String word in words) {
                  if (word.toLowerCase().contains('a')) {
                    temp++;
                  }
                }
                setState(() {
                  _wordcount = temp;
                });
              },
            ),
          ),
          Padding(
            padding: EdgeInsets.all(8),
            child: Text(
              "Numarul de cuvinte cu litera 'A' sunt :  " + _wordcount.toString(),
              style: TextStyle(
                fontWeight: FontWeight.bold,
                fontSize: 25,
              ),
            ),
          ),
        ],
      ),
    );
  }
}

关键修改说明

  • 使用RegExp(r'\s+')分割文本:匹配任意数量的空白字符(空格、换行等),避免连续空格生成无效空字符串
  • 添加where((word) => word.isNotEmpty)过滤空条目,确保仅统计有效单词
  • 用word.toLowerCase().contains('a')统一转换为小写后判断,实现大小写不敏感的匹配
  • 更新文本提示内容,让显示信息与功能需求一致

内容的提问来源于stack exchange,提问作者sorinsagara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:15:17