Javascript Replace在字符串的开头和结尾添加了几个

时间:2011-04-27 22:58:24

标签: javascript regex

我正在使用Javascript在标记中的每个文本字母之间添加<br />。代码如下:

$(this).html($(this).text().replace(/(.{1})/g, "$1<br />"));

它会在字符串的开头和结尾添加几个额外的<br />标记,因此不会将Asia转换为

A<br />s<br />i<br />a

我最终得到了

<br /><br /><br /><br /><br /><br /><br /><br />A<br />s<br />i<br />a<br /><br /><br /><br /><br /><br /><br /><br />

帮助!

编辑:没有前导或尾随空格。它只是<h1>Asia</h1>

4 个答案:

答案 0 :(得分:3)

尝试修剪你的文字,因为那些可能是空格:

$(this).html(jQuery.trim($(this).text()).replace(/(.{1})/g, "$1<br />"));

答案 1 :(得分:3)

而不是使用匹配任何字符的.,如果你在写信之后为什么不这样做:

$(this).html($(this).text().replace(/(\w{1})/g, "$1<br />"));

答案 2 :(得分:0)

你可能有一堆来自.text的前导空格和尾随空格。在插入<br>标记之前,您应该删除空格:

var $this = $(this);
var t  = $this.text().replace(/^\s*/, '').replace(/\s*$/, '');
$this.html(t.replace(/(.{1})/g, "$1<br />"));

或实例:http://jsfiddle.net/ambiguous/LAH99/

答案 3 :(得分:0)

使用正则表达式很容易使代码不清楚所以我用String.split()和Array.join()

编写了一个版本
var $this = $(this);
var text = $(this).text();
var arr = text.split('');
for( var i = 0; i < arr.length -1; i++ ) {
    arr[ i ] += '<br />';
}
$this.text( arr.join('') );