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

JavaScript Replace - Convert br Tags To New Lines

本文关键字:转换 新行 标签 br 替换 JavaScript      更新时间:2023-09-26

>我有一个看起来像这样的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",它仍然不起作用,这表明我在这里做错了什么。

有什么建议吗?

您可以使用's来查找空格,并?"前面的字符可能出现一次"。正则表达式在下面。

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

下面是一个包含所有可能的 br 标签的示例:<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;
}
<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>

试试

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

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

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

我现在怀疑项目变量是 JSON 构造,而不是我最初认为的常规数组。

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