2014-11-21 2 views
0
var string = "Let's say the user inputs hello world inputs inputs inputs"; 

Мой входной сигнал, чтобы получить полное слово "put".Получить полную строку используя часть данной строки

Мой ожидаемое слово "inputs"

Может кто-нибудь поделиться своим решением? Заранее спасибо

+4

Кто-то, конечно, * может *, но если вы сделаете какие-то усилия сами, мы не будем. –

+3

Что делать, если вход «Я помещал шпатлевку на компьютер»? Должны ли быть результатом ["put", "putty", "computer"]? –

+0

@MichaelLaszlo - это одно блестяще спроектированное предложение. –

ответ

0

регулярное выражение и фильтр для удаления дубликатов;

var string = "I put putty on the computer. putty, PUT do I" 
 

 
var uniques = {}; 
 
var result = (string.match(/\b\w*put\w*\b/ig) || []).filter(function(item) { 
 
    item = item.toLowerCase(); 
 
    return uniques[item] ? false : (uniques[item] = true); 
 
}); 
 

 
document.write(result.join(", ")); 
 

 
// put, putty, computer

2

Один из способов сделать то, что вы просите, - разбить входную строку на токены, а затем проверить каждую из них, чтобы увидеть, содержит ли она нужную подстроку. Чтобы устранить дубликаты, сохраните слова в объекте и просто поместите слово в список результатов, если вы видите его впервые.

function findUniqueWordsWithSubstring(text, sub) { 
 
    var words = text.split(' '), 
 
     resultHash = {}, 
 
     result = []; 
 
    for (var i = 0; i < words.length; ++i) { 
 
     var word = words[i]; 
 
     if (word.indexOf(sub) == -1) { 
 
      continue; 
 
     } 
 
     if (resultHash[word] === undefined) { 
 
      resultHash[word] = true; 
 
      result.push(word); 
 
     } 
 
    } 
 
    return result; 
 
} 
 

 
var input = 'put some putty on the computer output', 
 
    words = findUniqueWordsWithSubstring(input, 'put'); 
 
alert(words.join(', '));

Смежные вопросы