如何将制表符替换为四个空格 jQuery
How to replace tabs with four spaces jQuery
在你把这个问题标记为已经问过之前,请继续阅读!
所以我一直在网络上搜索(包括 StackOverflow),寻找一种用四个空格替换元素(更具体地说是 xmp 元素)中所有选项卡的方法。这样做的目的是显示代码。
如果你访问 http://synergytechhosting.com/codeshower.html,你会看到我的代码。第一个"完全测试代码"前面有一个选项卡。第二个有四个空格。这四个空格看起来比制表符更合理。我需要它将所有选项卡分成四个空格,以便如果有人决定使用选项卡间隔,它将为他们修复它,而不是让用户自己做。
另一个问题是XMP将代码的第一行计为空白,并将所有内容向下移动。这只能通过这样做来解决:
<xmp><div>
而不是正常:
<xmp>
<div>
基本上我需要这个脚本来替换每个带有 4 个空格的选项卡,并删除整个事情中的第一个"enter"。
我已经在使用它来修复选项卡,但它似乎不起作用。
$('xmp').html(function() {
return this.innerHTML.replace(/'t/g, ' ');
});
我只是真的需要这个来工作,并且已经让我自己发疯试图解决这个问题。我很确定这是一个非常愚蠢的错误。我希望这样,因为我是一个jQuery菜鸟。有没有比使用 XMP 更好的方法?我对任何事情都持开放态度,任何帮助都非常感谢。
此致敬意伊曼纽尔
你的脚本几乎是正确的,只需要用 4 个空格代替 1 个空格
要删除第一个换行符,只需从字符串中删除第一个字符
$('xmp').html(function() {
return this.innerHTML.substring(1).replace(/'t/g, ' ');
});
要修剪任何前导和尾随空格,请使用 jQuery.trim
。若要将代码从制表符重新缩进到空格,而不影响代码行内出现的制表符,请匹配字符串的开头 ( ^
),并使用多行标志 ( m
)。
$('xmp').html(function(){
return $.trim($(this).html()).replace(/^'t/gm, ' ');
});
工作示例:
$('xmp').html(function(){
return $.trim($(this).html()).replace(/^'t/gm, ' ');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<xmp>
<div>
<p>totally test code</p>
<p>totally test code</p>
<p>totally tab code</p>
</div>
</xmp>
以下代码片段应该足够好用:
$('xmp').html(function () {
return $.trim($(this).html()).replace(/^'t/gm, ' ');
});
它将用四个空格替换行首的任何制表符。因为正则表达式是用^
锚定的,所以它不应该影响行中间的任何内容。
一些你可能没有考虑过的事情:如果代码的原始作者在屏幕上有 8 个空格的制表符,但缩进代码时与这些制表符混合了 2 或 4 个空格的倍数,该怎么办?如果作者想将块缩进到第 12 列,他们会做类似 [Tab] + [4 spaces]
.这听起来很疯狂,但我见过一些项目(我想到了 Gallery2)使用制表符和空格的组合来精细控制缩进。看,'t
字符的字面意思不是"8(或 4)个空格",而是"向右跳到下一列是 8(或 4)的倍数"。正因为如此,[Tab] + [Tab]
通常在屏幕上呈现与[Tab] + [2 spaces] + [Tab]
相同的内容,但此正则表达式的转换方式将非常不同。
有一个 GNU 实用程序附带 *nix 称为 expand
,有点像将制表符转换为空格的瑞士军刀。源代码是 C 语言,但它很短,并且对于通用制表符到空格解决方案可能有多少边缘情况有一些有趣的见解。http://git.savannah.gnu.org/cgit/coreutils.git/plain/src/expand.c
如果您尝试在网页中显示空格,则还需要将空格替换为nbsp 首先将制表符替换为所需的空格数,然后用nbsp替换空格
//replace tabs with spaces
msg=msg.replace(/'t/g, ' ');
//replace spaces with
msg=msg.replace(/ /g, ''u00a0');
- 用于在Javascript中删除多个空格的特殊字符
- Angular:如何使用ng选项进行四个单独的选择
- Javascript在第一个空格上拆分字符串
- 正则表达式允许字母数字和空格,但不允许连续两个空格
- 将字符串从第二个空格切成特殊字符
- 有人知道如何使用highchart API实现三个或四个级别的动态下拉图吗
- 获取两个输入元素的值,并检查第三个元素的值.将值设置为第四个元素
- JavaScript:在 XMLSerializer 错误地解析实体后,用 html 160 实体替换三个空格
- 如何在图像上添加标签.在jquerymobile中图像的四个角落
- 如何在javascript中生成任意四个数字之间的随机数
- 通过 JavaScript 获取字符串中第二个空格之前和之后的子字符串
- 根据下拉选择隐藏四个输入框
- 调整窗口大小时,页面上的四个图像将不会调整大小
- 在字符串中插入下划线以代替单个或多个空格(连续)
- 如何在Javascript中检查字符串是否包含多个空格并返回
- 正则表达式在换行符 前面有两个空格
- 如何将制表符替换为四个空格 jQuery
- 插入四个空格而不是制表符
- 删除第四个空格之后的字符串的所有字符
- 匹配所有以四个空格为前缀的行