【问题标题】:JavaScript Replace - Convert br Tags To New LinesJavaScript 替换 - 将 br 标记转换为新行
【发布时间】:2016-01-28 08:15:50
【问题描述】:

我有一个如下所示的 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 标记的有效格式,但目前这并不重要。)

但是,上面代码中的替换命令不起作用,我不知道为什么。

如果我删除了替换命令,因此该行以变量名 thing 结尾,那么它会按预期运行,用正确的值更新我表单中的 textarea 框。

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

有什么建议吗?

【问题讨论】:

  • 基于什么症状你说代码“不工作”?
  • 基于replace命令的输出与输入相同,所以br标签依然存在。

标签: javascript replace newline


【解决方案1】:

您可以使用\s 查找空格,使用? 查找“前面的字符可能出现一次或不出现”。正则表达式在下面。

/\s?(<br\s?\/?>)\s?/g

下面是一个包含所有可能 br 标记的示例:&lt;br&gt;&lt;br /&gt;&lt;br/&gt;,中间有一些空格。

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;
}
<h3>input</h3>
<textarea id="input">
fooo <br> bar <br> lorum ipsum dolor.
valar durum <br /> kel alar fol <br /> durom <br />.
a bread of kebab is tasteful !<br/>
EOL
</textarea>
<hr />
<h3>output</h3>
<textarea id="output"></textarea>

【讨论】:

    【解决方案2】:

    试试

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

    将其放入文本区域

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

    【讨论】:

      【解决方案3】:

      所以,结果证明替换功能基本上没问题(但由于您的贡献,现在得到了增强)——输入数据的格式不是我所期望的。

      我以为变量 item.translated_text 是一个数组元素(因为当我将它回显到屏幕上时,我看到了我期望的值),但结果它实际上是一个数组,正如我在我发现显示变量的长度,发现只有1。

      我现在怀疑 item 变量是一个 JSON 结构,而不是像我最初想的那样是一个常规数组。

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

      【讨论】:

        最近更新 更多