2017-02-24 69 views
1

我试图做这样的命令!find England Michanel返回的人列出名字迈克尔,其住在英格兰的Javascript分割字符串用空格

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

这给了我想要的确切数据。但问题是当县名不止一个字如美国以及人名John Doe。如果我申请我现在的逻辑会像; country = United, name = States,之后会忽略其余部分。

是否有任何方法检索国家名称人名正确的空格?谢谢

+1

你必须做一些特殊的解析。您可以检查国家名称是以“United”开头,然后推断国家名称是2个字,但这是一个相当糟糕的处理方式。这实际上是一个很常见的问题。我已经看到它通过冲刺('united-states')或下划线('united_states')解决。除此之外,您要么需要进行某种模糊搜索,要么依靠像Solr这样的搜索提供商。 –

+0

'input'是怎么样的?你有控制权吗?请举一个'input'的例子。 –

+0

您需要首先明确输入的形式。 – Mamun

回答

1

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

1)你根本无法使用的空间作为分隔符(不知道你是否有这样的选择)

2)时刻,你获取你的数据,更换与ea的空间'〜'。 ( “联合〜国”)。经过拆分和分配“联合〜国”的阵列,代替“〜”了(或者只是搜索含〜)。

0

我真要支持这一点,你不介意额外的延迟:

尝试以下三种方法:

找到美国李四:

任何人在该国“美国约翰”叫“李四”

任何所谓的“李四”中的“美”和

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

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

0

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

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

例 !找到-c美国-p Jonh Doe的

所有你需要做的就是用正则表达式来提取-c的值,直到另一个标志,并基本相同的名称。