Замена символов табуляции в JavaScript
Обратите внимание на следующий HTML <pre> Элемент:
This is some
example code which
contains tabs
Я хотел бы заменить все символы табуляции четырьмя неразрывными пробелами в HTML (т.е. & nbsp;). Я тестировал вышеуказанный элемент pre с JavaScript для наличия символов табуляции следующим образом:
$('pre').ready(function() {
alert(/\t/.test($(this).text()));
});
Но он всегда возвращается false. Может ли кто-нибудь сказать мне правильный процесс, с помощью которого можно заменить области вкладок от исходного кода на HTML NBSP? Вкладки добавлены Komodo Edit и видны при просмотре источника.
Ответы
Ответ 1
Вы можете сделать это следующим образом:
$('pre').html(function() {
return this.innerHTML.replace(/\t/g, ' ');
});
Это будет проходить через все элементы pre
на странице и вызывать функцию для каждого из них. Функция jQuery html
использует возвращаемое значение функции, которую мы даем, чтобы заменить содержимое каждого элемента. Мы используем String#replace
для замены всех (обратите внимание на символы g
на регулярных выражениях) в строке HTML с четырьмя неразрывными пробелами.
Живой пример
Ответ 2
Удаляет разрывы строк, дополнительные пробелы и разрывы строк:
function removeNewlines(str) {
//remove line breaks from str
str = str.replace(/\s{2,}/g, ' ');
str = str.replace(/\t/g, ' ');
str = str.toString().trim().replace(/(\r\n|\n|\r)/g,"");
console.log(str);
}
Демо:
function removeNewlines(str) {
//remove line breaks from str
str = str.replace(/\s{2,}/g, ' ');
str = str.replace(/\t/g, ' ');
str = str.toString().trim().replace(/(\r\n|\n|\r)/g,"");
console.log(str);
}
$('#acceptString').click(function() {
var str = prompt('enter string','');
if(str)
removeNewlines(str)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='button' value='Enter String' id='acceptString' />
Ответ 3
Попробуйте следующее:
var tab = RegExp("\\t", "g");
document.getElementById("text").value =
document.getElementById("text").value.replace(tab,' ');