2017-02-24 106 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的值,直到另一個標誌,並基本相同的名稱。