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

Flutter编码转换函数问题:输入‘anh’无法返回预期值‘70’

问题分析与解决方案

问题根源

你的代码中,someFunc 函数会把输入字符串用 split('') 拆成单个字符列表,比如输入 anh 会被拆成 ['a', 'n', 'h'],然后逐个字符调用 codecVal。此时只有 'a' 能匹配到返回 19,'n' 和 'h' 走 default 返回空字符串,最终拼接结果是 19--(你看到的 19 是因为空字符串被忽略或未显示),而不会触发 codecVal 中 'anh' 的匹配分支——因为你从来没把完整的 anh 字符串传给 codecVal。

解决方案

根据你的需求,分两种情况处理:

情况1:仅匹配完整字符串(输入是单个字符或指定多字符组合)

直接修改 someFunc,不再拆分字符,把整个输入字符串传给 codecVal:

String someFunc(String val) {
  return codecVal(val.toLowerCase());
}

这样输入 anh 会直接匹配到 '70',输入 a 返回 '19',输入 b 返回 '00'。

情况2:优先匹配完整字符串,无匹配时再拆分单个字符处理

如果需要同时支持完整字符串匹配和单个字符匹配(比如输入 anh 返回 70,输入 ab 返回 19-00),可以调整 someFunc 的逻辑:

String someFunc(String val) {
  // 先检查整个字符串是否有对应编码
  String fullCode = codecVal(val.toLowerCase());
  if (fullCode.isNotEmpty) {
    return fullCode;
  }
  // 无完整匹配时,拆分单个字符处理并过滤空结果
  final charList = val.toLowerCase().split('');
  final codeList = charList.map((e) => codecVal(e)).where((code) => code.isNotEmpty).toList();
  return codeList.join("-");
}

验证

修改后测试:

  • 输入 anh → 返回 70
  • 输入 a → 返回 19
  • 输入 ab → 返回 19-00
  • 输入 xyz → 返回空字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:23:32