我有一个字符串,我逐个字符循环。我知道字符串中字符的偏移量,但我不知道该行。
我想要做的是获取特定偏移量的行文本。我怎么能这样做?
I like to
eat pizza
do you?
对于上面的示例,如果我想要偏移15
的行,我会得到以下行eat pizza
。
答案 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;
}