Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:Jline3:使用多个单词自动完成_Java_Autocomplete_Jline_Jline3 - Fatal编程技术网

Java:Jline3:使用多个单词自动完成

Java:Jline3:使用多个单词自动完成,java,autocomplete,jline,jline3,Java,Autocomplete,Jline,Jline3,我想使用多个单词自动完成,例如: > we can<TAB> welcome_trashcan pecan_seaweed yeswecan canwest >我们可以 欢迎来到西堪萨斯州的垃圾箱、山核桃、海草 所以所有的建议都应该包含这两个关键字。理想情况下,它应该适用于无限的关键字 我读了这本书,但我不知道该走哪条路来实现这一目标 我最终实现了一个新接口(它是用groovy编写的): 类MatchAnyCompleter实现Completer{ 受保护的最终候选名

我想使用多个单词自动完成,例如:

> we can<TAB>
welcome_trashcan  pecan_seaweed  yeswecan  canwest
>我们可以
欢迎来到西堪萨斯州的垃圾箱、山核桃、海草
所以所有的建议都应该包含这两个关键字。理想情况下,它应该适用于无限的关键字


我读了这本书,但我不知道该走哪条路来实现这一目标

我最终实现了一个新接口(它是用groovy编写的):

类MatchAnyCompleter实现Completer{
受保护的最终候选名单列表=[]
MatchAnyCompleter(列表){
断言列表
列出每个{
候选人
commandLine.words().stream().allMatch{
字符串关键字->
candidate.value()包含(关键字)
}
})
}
}
测试:

类matchanycomplettertest扩展了规范{
def“测试匹配”(){
设置:
def mac=新的MatchAnyCompleter([
“somevalue”,
“欢迎来到垃圾桶”,
“山核桃”,
“yeswecan”,
“坎韦斯特”,
“nomatchhere”
])
def cmdLine=new ParsedLine(){
//为了简单起见,删除了未实现的方法
@凌驾
单字{
return[“我们”、“可以”]
}
}
所选列表=[]
mac.complete(空,cmdLine,选中)
期望:
每个{
println it.value()
}
断言所选。大小()==4
}
}
输出:

welcome_trashcan
pecan_seaweed
yeswecan
canwest