基于字符串,是否可以为该字符串中的所有单词创建自动完成功能?
例如:String str =“Wave支持机器人和小工具。波浪机器人开发需要Java 1.6。波可以看作是包含小波的信封”
现在,如果用户在输入文本框中输入 Wave ,则在下拉列表中应显示:“ Wave支持”,“ Wave robot “和” wave可以“。
简而言之,它应该显示除了输入单词之外的下一个单词。
答案 0 :(得分:1)
一些帮助你入门的指示。
List<string> words = new List<string>(sData.Split(' '));
for (int i = 0; i < words.Count...
循环迭代单词,当循环中的当前项等于给定输入时,将words[i] + words[i + 1]
添加到最初为空的List中,让我们将其称为matches
。 matches
发送到浏览器,例如|
字符Response.Write(string.Join("|"), matches);
success
方法,并且对于每个可能的匹配构建,用户可以选择一行。答案 1 :(得分:1)
我使用jQuery Autocomplete做了这个。
我(从我的数据库)返回了一组可能的答案。
根据输入的内容,我在返回的列表中有一组优先级,在列表的该子部分中排序alpha。小组是:
我这样做是为了让输入集合中的返回列表中的单词在返回结果列表中突出显示。我的返回结果列出了匹配的整个字符串,匹配的单词上带有粗体。
您可以轻松地使用“单词加”方法将字符串与单词匹配,并为您描述的每个单词列表添加下一个单词 - 可能会在“开始”和“包含”之间应用我的策略中的小组可能会有所不同。
从性能的角度来看,我只使用了大约10,000个字符串(每个字符最多255个字符)作为可能的结果集,并且只返回了一个有限的集合(比如原始字符串样本中的50个“最佳匹配”。
答案 2 :(得分:0)
你想要的是一个类似于trie的数据结构。 trie是树状二元树,可以非常快速简单地在字典中进行搜索。很可能trie用于存储单词而不是几个单词,但我猜你仍然可以使用trie来完成你的任务。例如,你可以用句子的单词制作第一个trie。然后你用你的句子的两个单词做第二个trie,依此类推。现在,您必须在每个trie中查找以自动完成用户的输入。
答案 3 :(得分:0)
如果您将整个单词存储在某个数据源[数据库等]中,则可以。查看jQuery自动完成或只搜索自动完成javascript插件。
答案 4 :(得分:0)
使用扩展字母组合创建树
“对不起,我从来没有读过他的整个问题......我想它可以适应单词”
function wordTree(){
var WT = this;
WT.tree = {};
WT.word = function(word){
var current = WT.tree;
for(var i = 0;i < word.length; i ++){
var check = current[word[i ]];
if(!check){
current = current[word[i]] = {value: word.substr(0,i +1), words: [word]};
}else{
current = check;
current.words_ahead.push(word);
}
}
}
WT.getWords = function(base){
var current = WT.tree;
for(var i = 0;i < base.length; i ++){
var check = current[base[i]];
if(check){
current = check;
} else {
break;
}
}
return current.words;
}
}
现在创建基础树
var tt = new wordTree();
添加所有单词
tt.word("word");
tt.word("about");
tt.word("after");
tt.word("again");
tt.word("air");
tt.word("all");
tt.word("along");
tt.word("also");
tt.word("an");
tt.word("and");
tt.word("another");
tt.word("any");
tt.word("are");
tt.word("around");
tt.word("as");
tt.word("at");
tt.word("away");
tt.word("back");
tt.word("be");
tt.word("because");
tt.word("been");
tt.word("before");
tt.word("below");
tt.word("between");
tt.word("both");
tt.word("but");
tt.word("by");
tt.word("came");
tt.word("can");
tt.word("come");
tt.word("could");
tt.word("day");
tt.word("did");
tt.word("different");
tt.word("do");
tt.word("does");
tt.word("don");
tt.word("t");
tt.word("down");
tt.word("each");
tt.word("end");
tt.word("even");
tt.word("every");
tt.word("few");
tt.word("find");
tt.word("first");
tt.word("for");
tt.word("found");
tt.word("from");
tt.word("get");
tt.word("give");
tt.word("go");
tt.word("good");
tt.word("great");
tt.word("had");
tt.word("has");
tt.word("have");
tt.word("he");
tt.word("help");
tt.word("her");
tt.word("here");
tt.word("him");
tt.word("his");
tt.word("home");
tt.word("house");
tt.word("how");
tt.word("I");
tt.word("if");
tt.word("in");
tt.word("into");
tt.word("is");
tt.word("it");
tt.word("its");
tt.word("just");
tt.word("know");
tt.word("large");
tt.word("last");
tt.word("left");
tt.word("like");
tt.word("line");
tt.word("little");
tt.word("long");
tt.word("look");
tt.word("made");
tt.word("make");
tt.word("man");
tt.word("many");
tt.word("may");
tt.word("me");
tt.word("men");
tt.word("might");
tt.word("more");
tt.word("most");
tt.word("Mr");
tt.word("must");
tt.word("my");
tt.word("name");
tt.word("never");
tt.word("new");
tt.word("next");
tt.word("no");
tt.word("not");
tt.word("now");
tt.word("number");
tt.word("of");
tt.word("off");
tt.word("old");
tt.word("on");
tt.word("one");
tt.word("only");
tt.word("or");
tt.word("other");
tt.word("our");
tt.word("out");
tt.word("over");
tt.word("own");
tt.word("part");
tt.word("people");
tt.word("place");
tt.word("put");
tt.word("read");
tt.word("right");
tt.word("said");
tt.word("same");
tt.word("saw");
tt.word("say");
tt.word("see");
tt.word("she");
tt.word("should");
tt.word("show");
tt.word("small");
tt.word("so");
tt.word("some");
tt.word("something");
tt.word("sound");
tt.word("still");
tt.word("such");
tt.word("take");
tt.word("tell");
tt.word("than");
tt.word("that");
tt.word("the");
tt.word("them");
tt.word("then");
tt.word("there");
tt.word("these");
tt.word("they");
tt.word("thing");
tt.word("think");
tt.word("this");
tt.word("those");
tt.word("thought");
tt.word("three");
tt.word("through");
tt.word("time");
tt.word("to");
tt.word("together");
tt.word("too");
tt.word("two");
tt.word("under");
tt.word("up");
tt.word("us");
tt.word("use");
tt.word("very");
tt.word("want");
tt.word("water");
tt.word("way");
tt.word("we");
tt.word("well");
tt.word("went");
tt.word("were");
tt.word("what");
tt.word("when");
tt.word("where");
tt.word("which");
tt.word("while");
tt.word("who");
tt.word("why");
tt.word("will");
tt.word("with");
tt.word("word");
tt.word("work");
tt.word("world");
tt.word("would");
tt.word("write");
tt.word("year");
tt.word("you");
tt.word("your");
用“wo”搜索任何statring
tt.getWords("wo");
chrome控制台输出类似这样的东西
Object {item_value: "wo", words: Array[5], r: Object, u: Object}
item_value: "wo"
r: Object
u: Object
words_ahead: Array[5]
0: "word"
1: "word"
2: "work"
3: "world"
4: "would"
length: 5
__proto__: Array[0]
__proto__: Object