如何从数据属性值中选择特定单词

时间:2017-07-29 08:30:46

标签: javascript jquery

我试图从Web应用程序的数据属性中选择特定单词......这可能吗?

需要保留空间......

  1. 选择第一个单词
  2. 选择最后一个字
  3. 选择之前的词......
  4. 选择之后的字......
  5. 选择之前的所有内容......
  6. 选择之后发生的一切...
  7. 数据属性值可以轻松地从...更改

    • 我从这个值中选择一个单词
    • 我不只是从上面选择的菜单中选择某个单词

    
    
    //Must keep spaces
    
    alert('');// Alert the first word from data-nick-picking
    // Answer - Im
    
    alert('');// Alert the last word from data-nick-picking
    // Answer - value
    
    alert('');// Alert the word that comes before the word this
    // Answer - from
    
    alert('');// Alert the word that comes after the word picking
    // Answer - a
    
    alert('');// Alert everything before the word certain 
    // Answer - Im picking a
    
    alert('');// Alert everything after the word from
    // Answer - this value
    
    
    
    
    
    // Please no cheating or beating around the bush… the amount of words can change for before or after a word example
    // Alert everything before the word certains answer
    // Could change to
    // Im not just picking a
    
    // or
    
    // Alert everything after the word from answer
    // Could change to
    // the selected menu above
    
    <div data-nick-picking="Im picking a certain word from this value" class="wrapper"></div>
    &#13;
    &#13;
    &#13;

2 个答案:

答案 0 :(得分:0)

您可以将句子分成数组,然后搜索单个单词匹配。第一个和最后一个字将是第一个和最后一个数组元素。要搜索下一个或上一个单词,请迭代数组,找到匹配项后,选择下一个或上一个数组项。完成join()函数后,您总是可以重新构建数组。

var words, search, result;

// break sentence

words = $('.wrapper').data('nick-picking').split(' ');
search = 'from';
result = '';

// search array

for (var i=0; i<words.length; i++) {
    if (words[i] === search && i != words.length-1) {
    result = words[i+1]
  }
}

// rejoin sentence

words = words.join(' ');

// print result

console.log(result);

答案 1 :(得分:0)

如果您可以确保data-if的值没有重复出现给定单词,那么这只是一个非常简单的任务,只需将data-if的值转换为数组即可在数组中使用indexOfspliceslice

这是一个例子

&#13;
&#13;
var data = "Im picking a certain word from this value".split(' ')

// first word
console.log(data[0])

// last word
console.log(data[data.length - 1])

// word before 'this'
console.log(data[data.indexOf('this') - 1])

// everything before the word 'certain'
console.log(data.splice(0, [data.indexOf('certain')]).join(' '))

// everything after the word 'from'
console.log(data.slice([data.indexOf('form') - 1]).join(' '))
&#13;
&#13;
&#13;

但我担心,这不是一个非常好的决定。也许你需要对data-if实际应该如何工作的逻辑进行思考。 if应该或者最有可能检查给定条件是否评估为truefalse。这是一个非常难的决定,如果您拥有的是一个给定的字符串,可能会有一堆字符不符合您决定结果是true还是{{1}的规则}。