Получите текст в указанной строке и столбце

#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);