如何用text.contains()一次性检测文本包含多个指定值?
检测文本中是否包含多个指定字符的简化写法
你可以通过以下几种方式实现一行代码检测多个字符,不用写一堆||:
正则表达式法:利用Dart中
String.contains()支持传入RegExp的特性,用字符集语法匹配任意目标字符:_changeUsernameController.text.contains(RegExp(r'[ab]'))这里
[ab]表示匹配文本中是否存在a或b,如果要检测更多字符,直接在方括号里添加即可,比如[abcxyz]。如果是连续的字符范围,还可以写成[a-z]匹配所有小写字母。集合遍历法:把需要检测的字符放进一个集合,用
any()方法判断是否有任意一个字符存在于文本中:const targetChars = {'a', 'b'}; targetChars.any((char) => _changeUsernameController.text.contains(char))这种方式的好处是字符列表清晰,后续修改或扩展字符时更直观,适合需要频繁调整检测目标的场景。
注意:你想写的contains("a" "b")在Dart里会被解析成字符串拼接,等价于contains("ab"),检测的是文本中是否包含连续的ab字符串,而不是单独的a或b,所以达不到你要的效果。
内容的提问来源于stack exchange,提问作者Boatti
相关产品推荐
相关产品推荐

