Замена символов табуляции в JavaScript - PullRequest
20 голосов
/ 30 декабря 2010

Пожалуйста, обратите внимание на следующий HTML

element:</p>

<pre><code>This is some  
example code which    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contains tabs
</code>

Я хотел бы заменить все символы табуляции четырьмя неразрывными пробелами в HTML (т.е. & nbsp;). Я проверил вышеуказанный предварительный элемент с JavaScript на наличие символов табуляции следующим образом:

$('pre').ready(function() {
    alert(/\t/.test($(this).text()));
});

Но всегда возвращается false. Может кто-нибудь сказать мне правильный процесс, с помощью которого заменить табуляции из исходного кода на HTML NBSP? Вкладки были добавлены Komodo Edit и видны при просмотре источника.

Ответы [ 3 ]

40 голосов
/ 30 декабря 2010

Вы можете сделать это следующим образом:

$('pre').html(function() {
    return this.innerHTML.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
});

Это будет перебирать все элементы pre на странице и вызывать функцию для каждого из них.Функция jQuery html использует возвращаемое значение функции, которую мы даем для замены содержимого каждого элемента.Мы используем String#replace для замены всех (обратите внимание на флаг g на регулярном выражении) символов табуляции в строке HTML четырьмя неразрывными пробелами.

Пример в реальном времени

5 голосов
/ 24 октября 2013

Удаляет разрывы строк, лишние пробелы и разрывы строк:

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' />
0 голосов
/ 30 декабря 2010

Попробуйте это:

var tab = RegExp("\\t", "g");
document.getElementById("text").value =
document.getElementById("text").value.replace(tab,'&nbsp;&nbsp;&nbsp;&nbsp;');
...