随机位置字符串的Flutter搜索

ws51t4hk  于 2022-11-25  发布在  Flutter
关注(0)|答案(2)|浏览(142)

我想在字符串列表中搜索,但搜索查询不需要按顺序作为结果。
假设我有一个字符串列表

List<String> a = [
Fracture of right arm, 
Fracture of left arm, 
Fracture of right leg, 
Fracture of left leg,
];

我想实现一个搜索过滤器,当我输入fracture right时,结果将是

Fracture of right leg
Fracture of right arm

在Flutter中如何执行此操作?因为flutter contains()仅在我键入fracture **of** right时检测

uurv41yg

uurv41yg1#

您可以尝试以下操作:

List<String> a = [
    "Fracture of right arm",
    "Fracture of left arm",
    "Fracture of right leg",
    "Fracture of left leg",
  ];
  String query = "fracture right";

  List<String> terms = query.toLowerCase().split(" ");
  List<String> matches = a.where(
    (el) {
      var elLower = el.toLowerCase();
      for (var term in terms) {
        if (!elLower.contains(term)) {
          return false;
        }
      }
      return true;
    },
  ).toList();
  print(matches);

请注意,这将查找匹配项,而不考虑顺序,您可以修改它以禁止该操作。

g9icjywg

g9icjywg2#

您可以尝试以下代码:

var aFilter = a.where((p0) => (p0.toLowerCase().contains("fracture of right")).toList();

您会得到一个包含过滤后的元素的新列表。

相关问题