javascript - Lấy một dòng trong chuỗi tại vị trí offset cụ thể
Tôi có một chuỗi mà tôi đang lặp qua từng ký tự một. Tôi biết vị trí của ký tự trong chuỗi nhưng tôi không biết dòng.
Điều tôi muốn làm là lấy văn bản dòng tại một vị trí offset cụ thể. Tôi có thể làm điều đó như thế nào?
I like to
eat pizza
do you?
Đối với ví dụ trên, nếu tôi muốn dòng tại vị trí 15, tôi sẽ nhận được dòng sau eat pizza.
Câu trả lời #1
Bạn có thể thử đoạn mã này.
Nó sẽ đi qua từng ký tự của từng dòng, giảm offset xuống cho đến khi đạt 0. Sau đó nó in ra dòng mà nó đang ở.
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));Câu trả lời #2
Đây là cách tôi triển khai (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));