Необходимо удалить символы новой строки при изменении события ввода текста Javascript

#javascript

#javascript

Вопрос:

Я хочу удалить символы новой строки, такие как r n, t, n и другие специальные символы

 <button onclick="myFunction()">Try it</button>

<p id="demo"></p>
<input type="text" id="ctext" onchange="myFunction();"/>


<script>
function myFunction() {
  var str = document.getElementById("ctext").value.toString();
  var result = str.replace("n", "");
  result = result.replace(/[^a-zA-Z0-9]/g,'').replace(/__/g,'').replace(/\/g, "");
  document.getElementById("demo").innerHTML = resu<
  document.getElementById("ctext").value = resu<
  return false;
}
</script>
  

На самом деле, когда мы вводим текст в текстовое поле и происходит событие onchange, я хочу удалить символы новой строки, например, из ‘n’ в «, ‘ r n’ в «, ‘ t’ в «. но, к сожалению, он выдает вывод как n из ‘n’, rn из ‘ r n’. Я имею в виду, что он удаляет только обратную косую черту, а не полные символы новой строки.

Я хочу, чтобы строка, получаемая из входного текста, экранировалась из специальных символов, символов новой строки, таких как ‘n’, ‘ r n’, ‘ t’ и т. Д. Т.Е. Если мы введем эту строку «sdfjn nkl454 r n t__._» из вводатекстовое поле. затем при изменении это должно быть похоже на sdfjnkl454. но он показывает sdfjnnk454rnt.

Комментарии:

1. Когда вы вводите » n» в текстовое поле, это не преобразуется в символ новой строки. Это будет буквально строка с обратной косой чертой-N, эквивалент кода которой будет \n .

Ответ №1:

Это происходит потому, что в javascript это escape-символ, следовательно "n , такой же, как "n" .

Вы можете попробовать это регулярное выражение, чтобы заменить их:

 const string = `I have whitespaces and new line chars
that are
replaced. Same with  tabs`
const replacedString = string.replace(/[nsrt]*/g, "")
console.log(replacedString);  

Комментарии:

1. Правильно.. Но он также может добиться желаемого результата, добавив несколько строк.

Ответ №2:

Строка var result = str.replace("n", ""); в вашем коде заменяет только первое вхождение n .

Для того, чтобы удалить все вхождения n , r и t использовать регулярное выражение в первом параметре replace метода, как показано ниже:

var result = str.replace(/n|r|t/g, "");

В приведенном выше заявлении говорится, что если вы найдете какой-либо n или r или t , то просто замените его на «».

Кроме того, в случае, если вам также необходимо удалить все символы подчеркивания, вы можете просто обновить приведенное выше утверждение до:

var result = str.replace(/n|r|t|_/g, "");

Ответ №3:

Вы должны использовать str.replace(/\n|\r|\t/g, "") , если хотите заменить » n», » r»,» t»

 function myFunction() {
  var str = document.getElementById("ctext").value.toString();
  var result =  str.replace(/\n|\r|\t/g, "");
  result = result.replace(/[^a-zA-Z0-9]/g,'').replace(/__/g,'').replace(/\/g, "");
  result = result.replace(/[^a-zA-Z0-9]/g,'');
  document.getElementById("demo").innerHTML = resu<
  document.getElementById("ctext").value = resu<
  return false;
}  
 <button onclick="myFunction()">Try it</button>

<p id="demo"></p>
<input type="text" id="ctext" onchange="myFunction();"/>  

Ответ №4:

Попробуйте приведенный ниже код для получения точного результата, который вы хотели. Попробуйте

 <p id="demo"></p>
<input type="text" id="ctext" onchange="myFunction();"/>


<script>
function myFunction() {
  var str = document.getElementById("ctext").value.replace('\n','n');
   str = str.replace('\s','s');

  str = str.replace('\r','r');

  str = str.replace('\t','t');

 var result = str.replace(/[_.nsrt__]*/g, "");

  document.getElementById("demo").innerHTML = resu<
  document.getElementById("ctext").value = resu<
  return false;
}
</script>