Flutter Typeahead搜索中如何解决空格分割导致的无效空元素问题
嗨,这个场景我太熟悉了!用split(' ')确实会在输入末尾空格时搞出奇怪的空项/空格项,咱们换几种方式就能完美解决:
方法1:用正则分割(最省心)
直接用匹配一个或多个空白字符的正则来分割,不管是单个空格、多个空格还是末尾的空格,都能自动处理成干净的搜索词列表:
List<String> searchWordList = search.toLowerCase().split(RegExp(r'\s+'));
测试几个场景:
- 输入「bengali 」(末尾带空格)→ 得到
['bengali'] - 输入「bengali biriyani」→ 得到
['bengali', 'biriyani'] - 输入「bengali biriyani 」(多个空格+末尾空格)→ 还是得到
['bengali', 'biriyani']
方法2:分步处理(逻辑更直观)
如果你喜欢分步把控流程,可以先去掉字符串首尾的空格,再分割后过滤掉所有空字符串:
List<String> searchWordList = search.toLowerCase() .trim() // 去掉首尾空格 .split(' ') .where((word) => word.isNotEmpty) // 过滤掉分割产生的空项 .toList();
这个方法同样能搞定各种空格问题,适合需要在中间步骤加额外处理的情况。
为啥原来的split(' ')不行?因为它是按单个空格字符精准分割,当字符串末尾有空格时,空格后面没有内容,但split还是会生成一个空字符串项(你看到的' '可能是输入时多打了空格?不过不管怎样,上述两种方法都能解决)。
内容的提问来源于stack exchange,提问作者user14709104
相关产品推荐
相关产品推荐

