在特定偏移量的字符串中获取一行

时间:2016-07-09 19:01:40

标签: javascript typescript

我有一个字符串,我逐个字符循环。我知道字符串中字符的偏移量,但我不知道该行。

我想要做的是获取特定偏移量的行文本。我怎么能这样做?

I like to 
eat pizza
do you?

对于上面的示例,如果我想要偏移15的行,我会得到以下行eat pizza

4 个答案:

答案 0 :(得分:2)

这是我的实施(https://jsfiddle.net/Lgb3qncu/1/):

function findLine(str, idx) {
  var first = str.substring(0, idx);
  var last = str.substring(idx);

  var firstNewLine = first.lastIndexOf("\n");

  var secondNewLine = last.indexOf("\n");

  if ( secondNewLine == -1 ) {
    secondNewLine = last.length;
  }

  return str.substring(firstNewLine+1, idx+secondNewLine);
}


var str =
`I like to 
eat pizza
do you?`;
console.log(findLine(str, 15));

答案 1 :(得分:2)

您可以尝试使用此代码。

它的作用是遍历每一行的每个字符,递减offset直到它达到0.然后它打印出它所在的行。

function getLine(str, off) {
  var lines = string.split("\n");
  for(line in lines)
    for(var i = 0; i < lines[line].length; i++)
      if(--off == 0)
        return lines[line];
}

var string =
`I like to 
eat pizza
do you?`;
console.log(getLine(string, 15));

答案 2 :(得分:0)

这是我的解决方案。

public static String getString(String str, int offSet) {
    String array[] = str.split("\\n");

    for (int index = 0; index < array.length; index++) {

        if (array[index].length() >= offSet)
            return array[index];
        else
            offSet = offSet - array[index].length();

    }
    return null;
}

答案 3 :(得分:0)

java脚本解决方案。

function getString(str,offSet){
   var array = str.split("\n"); 
   for (index = 0; index < array.length; index++) { 
        if(array[index].length >=offSet)
           return array[index];
        else
           offSet = offSet -  array[index].length;                               
   }
   return null;
}