flutter 如何检查text.contains()是否包含多个值

dzjeubhm  于 2022-11-25  发布在  Flutter
关注(0)|答案(3)|浏览(139)

我有一个文本编辑控制器,我想检查多个字符在同一个contains()

_changeUsernameController.text.contains("a" "b") // what I want

_changeUsernameController.text.contains("a") ||
_changeUsernameController.text.contains("b") // what I have to do

我不想写50行,所以我怎么能写在一行,就像'我想要什么'行谢谢

iszxjhcz

iszxjhcz1#

您可以使用any方法编写更少的代码来获得同样的效果:

final subStrings = <String>["a", "b" /* ... */ ];
var result = subStrings.any(_changeUsernameController.text.contains);

或者,如果您更喜欢更短的长度:

var result = ["a", "b"].any(_changeUsernameController.text.contains);
bzzcjhmw

bzzcjhmw2#

创建如下函数:

bool containsAny(String text, List<String> substrings) {
  // returns true if any substring of the [substrings] list is contained in the [text]
  for (var substring in substrings) {
    if (text.contains(substring)) return true;
  }
  return false;
}

示例:

final text = 'Flutter';
final result = containsAny(text, ['c', 'd', 'e']); // true
final result2 = containsAny(text, ['a', 'b', 'c']); // false
sg3maiej

sg3maiej3#

你可以通过RegExp来实现这一点,试试这个:

var reg = RegExp(r'(?:a)|(?:b)');
_changeUsernameController.text.contains(reg);

示例:

var test1 = 'acc';
var test2 = 'cc';
var test3 = 'ccb';
print(test1.contains(reg)); //true
print(test2.contains(reg)); //false
print(test3.contains(reg)); //true

相关问题