【问题标题】:Flutter searching for contacts in Hebrew (left-to-right) with whitespace is not working颤振搜索带有空格的希伯来语(从左到右)联系人不起作用
【发布时间】:2020-10-04 08:35:32
【问题描述】:

我正在尝试搜索以我的本地语言(不是英语)保存的联系人。 例如,我的名字中有 2 个单词。比方说 b 当我搜索“a”(第一个单词)时,它工作正常,但是当我在那里添加“空格”来写另一个单词时,联系人列表将返回空,即使在空格的每个单词之后它都会变成空列表。 下面是使用代码的例子:

ContactsService.getContacts(
withThumbnails: false,
photoHighResolution: false,
query: a b);

注意:我以“a b”为例。就我而言,这是我的希伯来语单词。

添加第一个单词的截图:

一个字后加空格的截图:

添加字母空格的截图:

【问题讨论】:

  • 我也面临同样的问题。

标签: flutter dart


【解决方案1】:

当间距时,例如在希伯来语中,添加一个 Unicode 字符 \u200f

为了检查您的字符串是否包含\u200f,只需将字符串从您的run terminal 复制到dartpad。如您所见,该空间附近有一个奇怪的点。

在这种情况下,您需要做的就是使用上述正则表达式删除 Unicode 字符:

var searchName = val.replaceAll(new RegExp(r'[\u200f]'), "");

按姓名搜索联系人的用例:

List<Contact> tempContactList = List<Contact>();
contactList.forEach((contact) {
  if (contact.displayName != null){
    var searchName = val.replaceAll(new RegExp(r'[\u200f]'), "");
    if(contact.displayName.contains(searchName)){
      tempContactList.add(contact);
    }
  }
});

享受吧! :)

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多