2011-03-10 65 views
0

我正在JavaScript中實現一個自動完成腳本。但是,其中一些名稱是兩個詞的名稱,中間有一個空格。你可以用什麼樣的算法來處理它。我正在使用trie來存儲名稱。
我能想出的唯一解決方案就是說不能使用兩個單詞名稱(要麼將它們放在一起,要麼放在中間)。另一個想法是創建這些類型的名稱列表,並有一個單獨的循環來檢查輸入。我有的另一個可能是最好的想法是稍微重新設計它,併爲姓和名分類,然後是一個額外的名稱類別。我想知道是否有更好的解決方案?如何自動完成包含空格的名稱?

編輯︰我意識到我不是很清楚我在問什麼。我的問題是沒有添加兩個單詞短語到trie,但當有人輸入名字時返回它們。在特里我分裂的名字,以便您可以搜索。因此,如果某人輸入了名字和空格,我將如何判斷他們是否正在輸入名字的其餘部分,或者如果他們正在輸入姓氏。

+4

爲什麼空間不同於任何其他角色? – 2011-03-10 02:54:57

回答

3

爲什麼不能使用空格來包含名稱?

一旦你有候選人名單,分裂他們每個人對空間和展示的第一個標記...

0

是否有一個原因是你正在滾動自己的自動完成腳本,而不是使用現有的腳本,如YUI autocomplete? (即你只是爲了好玩嗎?等等)

+0

我在應用程序中使用它,但我也在做它的樂趣,因爲我喜歡弄清楚這樣的工作是如何工作的。 – qw3n 2011-03-10 04:18:01

0

如果你有一個方法來解析這兩個詞的名字,然後就包括你的空間線索。但是,如果你不能確定什麼是兩個單詞的名稱和什麼是兩個單獨的單詞,並且你的單詞不能足夠大以容納所有雙字序列,那麼你有問題。

解決這個問題的一個簡單方法是默認允許雙字對,但是如果在空格後有太多的分支,請丟棄整個分支。這樣,當第一個單詞對第二個單詞有預測性時,你會得到自動完成,但是當它可能是大量的東西時,你的單詞將在單個單詞的末尾結束。

0

如果你使用多行編輯器,我想最好的選擇自動完成項目將是一個字。所以必須解析名字,中間名和姓氏並添加一個查找項目。

對於(一行)文本框使用,您可以在搜索條件中添加空格(以及名字+空格+中間名+空格+姓氏模式)。

相關問題