【问题标题】:Javascript split for string with spaces带有空格的字符串的Javascript拆分
【发布时间】:2017-07-15 01:21:14
【问题描述】:

我正在尝试发出类似 !find England Michanel 的命令,以返回居住在 England 的姓名为 Michael 的人员列表。

let [country, name] = input.split(" ").slice(1);

这给了我想要的确切数据。但问题是当县名不止一个词时,如 United States 以及人名如 John Doe。如果我应用我当前的逻辑将会是这样的; country = United, name = States 之后将忽略其余部分。

有什么方法可以正确检索带空格的国名人名吗?谢谢

【问题讨论】:

  • 你必须做一些特殊的解析。您可以检查国名是否以“United”开头,然后推断国名是 2 个单词,但这是一种非常糟糕的处理方式。这实际上是一个很常见的问题。我已经看到它通过破折号 (united-states) 或下划线 (united_states) 解决了。除此之外,您要么必须进行某种模糊搜索,要么依赖像 Solr 这样的搜索提供程序。
  • input 长什么样子?你有控制权吗?请举例input
  • 你需要先明确输入的形成方式。
  • 如果输入是"country name",你为什么使用.slice(1),为什么在你的命令/函数名前使用!

标签: javascript


【解决方案1】:

我假设您从某种数据库中获取数据? 好的,这里使用了很多假设:

1) 您不能简单地将空格用作分隔符(不知道您是否有该选项)

2) 在您获取数据的那一刻,将空格替换为 e.a. '~'。 (“美国~美国”)。拆分并将“United~States”分配给数组后,再次替换“~”(或者只搜索包括~)

【讨论】:

    【解决方案2】:

    我真的很想支持这个并且你不介意额外的延迟:

    尝试所有三个:

    !查找美国 John Doe:

    在“美国约翰”这个国家叫“Doe”的人

    在“美国”中称为“John Doe”的任何人

    任何在“United”中称为“States John Doe”的人

    它的额外工作,但回答了问题。

    【讨论】:

      【解决方案3】:

      假设您可以对命令进行细微调整。

      对我来说,最好的方法是简单地使用标志,然后应用正则表达式来获取标志之后的完整输入。

      示例 !find -c 美国 -p Jonh Doe

      您所要做的就是使用正则表达式从 -c 中提取值直到另一个标志,并且名称基本相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        • 2017-06-09
        • 1970-01-01
        • 1970-01-01
        • 2021-08-11
        相关资源
        最近更新 更多