Почему последняя строчка "p = Console.ReadLine();" переноситься? Как это исправить?

у меня есть прога

var div = document.getElementById("hh");

function op(){
  var reg = /read\((.+?)\)/;
  var ab = div.innerHTML.replace(reg, '$1')
  var cc = ab.split(',')
  for(let i = 0; i < cc.length; i++){
     console.log(cc[i] + " = Console.ReadLine();");
  }
}
<!doctype html>
<html>
 <head> 
  <meta name="viewport" content="width=device-width, initial-scale=1"> 
 </head> 
 <body> 
  <h1> Hello, Dcoder </h1> 
  <div id="hh">
    read(a, b, к, р) 
  </div> 
  <button onclick="op()">click</button> 
 </body>
</html>

Результат:

result

Вопрос: Почему последняя строчка "p = Console.ReadLine();" переноситься? Как это исправить?


Ответы (2 шт):

Автор решения: Igor
var ab = div.innerHTML.trim().replace(reg, '$1')
                      ^^^^^^^ 
→ Ссылка
Автор решения: vsemozhebuty

Дело в том, что вы заменяете только участок строки посередине содержимого тега, а пробелы и переводы строки остаются по обоим бокам этого фрагмента и потом при разбиении строки по запятым прибавляются к первому и последнему элементу. Вам нужно или изменить регулярку так, чтобы она удаляла всё до и после оставляемого фрагмента, или извлекать только фрагмент в скобках (и лучше разбивать по запятым с пробелами, чтобы потом пробелы не добавляли отступы).

Оба варианта:

var div = document.getElementById("hh");

function op(){
  var reg = /.+read\((.+?)\).+/s;
  var ab = div.innerHTML.replace(reg, '$1')
  var cc = ab.split(', ')
  for(let i = 0; i < cc.length; i++){
     console.log(cc[i] + " = Console.ReadLine();");
  }
}
<!doctype html>
<html>
 <head> 
  <meta name="viewport" content="width=device-width, initial-scale=1"> 
 </head> 
 <body> 
  <h1> Hello, Dcoder </h1> 
  <div id="hh">
    read(a, b, к, р) 
  </div> 
  <button onclick="op()">click</button> 
 </body>
</html>

var div = document.getElementById("hh");

function op(){
  var reg = /read\((.+?)\)/;
  var ab = div.innerHTML.match(reg, '$1')[1];
  var cc = ab.split(', ')
  for(let i = 0; i < cc.length; i++){
     console.log(cc[i] + " = Console.ReadLine();");
  }
}
<!doctype html>
<html>
 <head> 
  <meta name="viewport" content="width=device-width, initial-scale=1"> 
 </head> 
 <body> 
  <h1> Hello, Dcoder </h1> 
  <div id="hh">
    read(a, b, к, р) 
  </div> 
  <button onclick="op()">click</button> 
 </body>
</html>

→ Ссылка