繁体   English   中英

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

[英]JavaScript Replace - Convert br Tags To New Lines

我有一个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命令不起作用,我无法弄清原因。

如果我删除了replace命令,所以该行以变量名thing结尾,则它的行为符合预期,并以正确的值更新了表单中的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。

我现在怀疑我第一次想到的是item变量是JSON构造,而不是常规数组。

抱歉,如果我在此上浪费任何时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM