JavaScript替换 - 将br标签转换为新行

时间:2016-01-28 08:15:50

标签: javascript replace newline

我有一个看起来像这样的JavaScript函数:

function onAfterTranslate(item, translator) {
var thing = item.translated_text;
document.myform.keywords.value = "Translated Text:\r\n\r\n" + thing.replace(/<br>/g, "\r\n");
}

名为item的参数是一个对象,它包含一个名为translated_text的属性。

这是这个变量的内容:

mono <br> toro <br> gato <br> perro <br> elefante 

我想要做的是将br标记转换为换行符。 (理想情况下,它应该在br标记之前和之后查找可选空格,并且它还应该接受存在的任何有效格式的br标记,但这在目前并不重要。)

但是,上面代码中的replace命令不起作用,我找不到原因。

如果我删除了替换命令,那么该行以变量名称为结尾,那么它的行为与预期一致,用正确的值更新表单中的textarea框。

即使我尝试用星号替换字母“o”,它仍然不起作用,这表明我在这里做了一些根本性的错误。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您可以使用\s查找空格,{{1>}可以使用“前一个字符可能会发生一次”。正则表达式如下所示。

?

下面是一个包含所有可能的br标记的示例:/\s?(<br\s?\/?>)\s?/g <br><br />,其间有一些空格。

<br/>
var input = document.getElementById('input').value;
console.log(input);
document.getElementById('output').value = input.replace(/\s?(<br\s?\/?>)\s?/g, "\r\n");
textarea {
  width: 400px;
  height: 100px;
}

答案 1 :(得分:1)

var text = "mono <br> totono <br> gato <br> elefante"
console.log( text.split( "<br>" ).join( "\n" ) );

用于修剪空格

text.split( "<br>" ).map( function(val){ return String(val).trim(); } ).join( "\n" );

将其放入textarea

document.body.innerHTML +=  "<textarea>" + text.split( "<br>" ).map( function(val){ return val.trim() } ).join( "\n" ) + "</textarea>" ;

答案 2 :(得分:0)

所以,事实证明替换函数基本上很好(但现在由于你的贡献而得到增强) - 输入数据的格式并不是我所期望的。

我认为变量item.translated_text是一个数组元素(因为当我将它回显到屏幕上时,我看到了我期待的值),但事实证明它实际上是一个数组,因为我发现当我显示变量的长度,发现它只有1。

我现在怀疑item变量是JSON结构而不是常规数组,正如我首先想到的那样。

对不起,如果我浪费了任何人的时间。