替换JavaScript中的制表符

请考虑以下HTML

元素: 

This is some example code which      contains tabs 

我想用HTML中的四个不间断空格字符替换所有制表符(即 )。 我用JavaScript测试了上面的pre元素是否存在制表符,如下所示:

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

但它总是返回假。 任何人都可以告诉我将源代码中的制表符空格替换为HTML NBSP的正确过程吗? 这些选项卡已由Komodo Edit添加,在查看源时可见。

你可以这样做:

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

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

实例

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

 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) }); 
   

试试这个:

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