#javascript #string #line
Вопрос:
Если у меня есть такая строка:
const string = [
'some text here',
'some more text here',
'more more more text here',
'just for some variety here'
].join('n')
И если у меня есть номер начальной строки и номер столбца, а также номер конечной строки и номер столбца, как я могу получить текст в этих точках?
Например, если данные о номере строки были:
const lineData = {
start: {row: 2, column: 5},
end: {row: 3, column: 4}
}
Я должен получить 'more text herenmore'
Ответ №1:
Здесь я написал решение. Я преобразовал ваш string
массив в 2D
массив и объединил символы от начала до конца. Следуйте этому-
const string = [
'some text here',
'some more text here',
'more more more text here',
'just for some variety here'
];
const string2d = string.map(line => line.split(''));
const lineData = {
start: {row: 2, column: 5},
end: {row: 3, column: 4}
}
const {start: {row: startRow, column: startColumn}, end: {row: endRow, column: endColumn}} = lineData;
let ans = '';
// Run from start row to the end row
for (let i = startRow - 1; i <= endRow - 1; i ) {
let j = 0;
// For the first row the column starts from the start column
// And the other cases it starts from 0
if (i === startRow - 1) {
j = startColumn - 1;
}
// Concat the characters from j to length of the line.
// But for the endRow line concat to the end column
while (j < string2d[i].length) {
ans = string2d[i][j];
j ;
if (i === endRow - 1 amp;amp; j > endColumn) break;
}
// Append a newline after every line
ans = "n";
}
console.log(ans);