我有一个看起来像这样的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”,它仍然不起作用,这表明我在这里做了一些根本性的错误。
有什么建议吗?
答案 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结构而不是常规数组,正如我首先想到的那样。
对不起,如果我浪费了任何人的时间。