【问题标题】:Show only a word from a string in autocomplete在自动完成中仅显示字符串中的一个单词
【发布时间】:2016-12-19 00:14:08
【问题描述】:

我有一个这样的字符串数组...

Array = ["WELLS FARGO DEALER  May 18 06:11 4137 Reference# 10982", 
         "ONLINE - TRANSFER TO Ult SavingMay 18 03:57 4137 ONLINE Reference# 5929", 
         "Transfer From Checking 03:57a #4137 ONLINE Reference # 005929",
         "BURLNGTON STORES861"]

当我使用 jquery-ui 自动完成并且用户开始输入一个或多个单词时,我希望自动完成只显示与输入匹配的“WORD 或 WORDS”,因此即使匹配的字符串更长,它也只会显示该字符串中的匹配单词或单词。如何仅从数组中的字符串中选择匹配的单词?

因此,如果用户键入 wells f,它应该从 “富国银行经销商 5 月 18 日 06:11 4137 参考编号#10982” 字符串。

【问题讨论】:

  • 您可以创建一个对象,该对象具有可能的输入值匹配的属性,例如,属性名称长度引用 7,如果 11 个字符中有 7 个匹配,则返回属性值。

标签: jquery ruby-on-rails regex string autocomplete


【解决方案1】:

您可以使用像 /#{text}([a-zA-Z]*)\b/ 这样的正则表达式,这将匹配所有输入的文本和任何其他 a-z 字符,直到它到达单词边界。

【讨论】:

  • 有趣的答案,如何将此正则表达式添加到控制器搜索方法render json: names.map(&:downcase).select {|i| i.include?(params[:term].downcase)}.to_json
  • 我试过这个render json: names.map(&:downcase).select {|i| i.include?(/#{params[:term].downcase}([a-zA-Z]*)\b/)}.to_json,但我一直收到错误no implicit conversion of Regexp into String
  • render json: names.map(&:downcase).select {|i| i.match(/#{params[:term].downcase}([a-zA-Z]*)\b/)}.to_json 这样尝试过匹配,但它仍然给了我整个字符串,而不仅仅是匹配的单词。
  • 我明白了!我必须进行两次迭代,第一次找到匹配的字符串,第二次从字符串中删除我不想要的东西!谢谢@PoloniculMov 和 PauloAbreu
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多