替换JavaScript中的制表符

时间:2010-12-30 12:56:43

标签: javascript jquery tabs space

请考虑以下HTML< pre>元素:

This is some  
example code which    
     contains tabs

我想用HTML中的四个非破坏空格字符替换所有制表符(即& nbsp;)。我已经使用JavaScript测试了上面的pre元素是否存在制表符,如下所示:

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

但它总是返回false。任何人都可以告诉我从源代码替换标签空间到HTML NBSP的正确过程吗?这些选项卡已由Komodo Edit添加,在查看源时可见。

3 个答案:

答案 0 :(得分:40)

你可以这样做:

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

这将遍历页面上的所有pre元素,并为每个元素调用函数。 jQuery的html函数使用我们给出的函数的返回值来替换每个元素的内容。我们使用String#replace替换HTML字符串中的所有字符(请注意regexp上的g标记)并使用四个不间断的空格。

Live example

答案 1 :(得分:5)

它会删除换行符,额外的空格和换行符:

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' />

答案 2 :(得分:0)

试试这个:

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