从索引位置返回字符串中的空白区域

时间:2015-03-23 17:38:02

标签: javascript jquery string substr

假设我有一个字符串,但文字可以是任何内容!

  

这是一个测试用例

'boundary'是空格后的计数,这意味着charIndex =

(0)这个 (5)是 (8)a (10)测试 (15)案例

上述意思是从(0)到(5)单词等于'this'。

如果我想知道刚刚使用过的字词,我需要substrcharIndex开始并向后看,直到indexOf(' ')

示例:如果我想找到刚用于charIndex(10)的单词,我将如何指示javascript向后看,直到下一个空格并给我单词“a”。

是否可以使用Javascript或JQuery以极少的处理时间执行此操作?

更新

我决定实现我所需要的,而不是照顾这个词并且回去,我将这些词分开并将每个charIndex用作计数。代码如下:

var u = new SpeechSynthesisUtterance();
var words = element.innerHTML.split(' ');
var a = 0;
 u.text = element.innerHTML;
 u.lang = 'en-UK';
 u.rate = 0.7;
 u.onboundary = function(event) {
 console.log(words);
 element.innerHTML = element.innerHTML.replace(words[a], '<strong>' + words[a] + '</strong>');
  a++;       
  }

但由于这不是问题的答案,反向搜索字符串的最佳答案仍然是标记正确的答案,尽管根据字符串结构仍需要一些工作。

2 个答案:

答案 0 :(得分:3)

不清楚确切的问题,但你可以在你的情况下使用lastindexof,indexof和substr的组合或写你自己的东西。

注意:没有进行错误处理等。请这样做。

var stringToBeParsed="This is a test case"
i = stringToBeParsed.lastIndexOf(" ",8);
j = stringToBeParsed.indexOf(" ",i+1);

document.getElementById('output').innerText = stringToBeParsed.substr(i,j-i);

自定义

function parseBackward(stringToBeParsed, indexOfSpace){
    var output = '';
    for (var i = indexOfSpace-1; i >= 0; i--) {
        if(stringToBeParsed.charAt(i) == ' '){
            break;
        }
        output = stringToBeParsed.charAt(i) + output;
    }    
    document.getElementById('output').innerText = output;
}

答案 1 :(得分:0)

如果我理解你的问题,你可以使用lastIndexOf:

var TC="This is a test case"
TC.lastIndexOf(" ",10)

这将返回9,使用lastIndexOf(字符串,位置)向后搜索。

编辑: 如果你需要这个词:

var TC="This is a test case"
TC.substr(TC.lastIndexOf(' ',10)+1,TC.length - TC.indexOf(' ',10));

所以你使用substr。首先从位置10空间向后搜索(并且在和字母的开头得到1)以开始子程序。作为第二个参数y得到下一个出现并减去长度。

EDIT2:

好的,这个功能可以在不到几毫秒的时间内工作:

function getWord(phrase,position){
  var last = phrase.indexOf(' ',position);
  var more=0
  if (last == -1){
    more = phrase.length;
  } else { more = phrase.indexOf(' ',position);}
  var word = phrase.substring(phrase.lastIndexOf(' ',position)+1,more);
  return(word);
}

在这个plunkr http://plnkr.co/wfeitWvSvoLzqIknKFyg中,你可以检查它的工作时间不到一毫秒。如果你打开一个控制台,你会看到如何在指定位置使用该词。