我有一个来自Oracle进程的返回数据字符串,该字符串输出[TD]
和[/TD]
而不是<TD>
和</TD>
来表示html表单元。我需要使用Javascript将[TD]
转换为<TD>
并将[/TD]
转换为<TD>
的元素,该元素具有ID不变的值。
我已经在这里搜索了Google,并进行了搜索,这是到目前为止我所获得的最接近的信息,但都不起作用。非常感谢您在这里获得任何帮助。
function strReplace() {
var string = document.getElementById('unchangedValues').innerHTML;
var res1 = string.replace(/(\[)|(\])/g, function(match, p1, p2) {
if (p1) return "<";
if (p2) return ">"
});
}
而且我也尝试过:
function substituteValues() {
const str = document.getElementById('unchangedValues').innerHTML;
const res1 = str.replace(/\[TD\]/g, '\<TD\>');
document.getElementById('unchangedValues').innerHTML = res1;
}
谢谢
答案 0 :(得分:2)
您可以使用
console.log(
"[TD] and [/TD]".replace(/\[(\/?TD)]/gi, '<$1>')
)
/\[(\/?TD)]/gi
正则表达式匹配
\[
-一个[
(\/?TD)
-组1:/
1或0次,然后TD
]
-一个]
字符/gi
-多次出现,不区分大小写。如果TD
中可能有属性,请使用
// Assuming values can't contain ] and " are value qualifiers
console.log( '[TD key="value"] and [/TD]'.replace(/\[(\/?TD(?:\s[^\]]*)?)]/gi, '<$1>') );
// Assuming values can contain ] and " or ' are value qualifiers
console.log( '[TD key="va[l]ue here" key2=\'value 2\' auto ] and [/TD]'.replace(/\[(\/?TD(?:\s+\w+(?:=(?:"[^"]*"|'[^']*'|\w+))?)*)\s*]/gi, '<$1>') );
答案 1 :(得分:0)
适用于所有标签的通用解决方案,不仅限于[TD]
:
console.log(
'Lorem [TD FOO="ipsum"] dolor sit [/TD] amet'
.replace(/\[([^\]]+)\]/g, '<$1>')
);
答案 2 :(得分:0)
那只用2个str.replace()
放在方括号中呢?
var str = 'John [TD] Smith [/TD]';
var newstr = str.replace(/\[/gi, '<').replace(/]/gi,'>');
console.log(newstr);
答案 3 :(得分:0)
如果您的id
位于table
元素上,甚至位于tr
元素上,并且格式不正确(我不知道,因为您没有发布HTML) ,浏览器会将无效内容移到表格(或最接近的有效位置)之外。您可以看到运行时,tr
中没有数据,这使您的代码尝试格式化空字符串,然后将其保存。
console.log(document.getElementById('unchangedValues').innerHTML)
<table id="unchangedValues">
<tr>
[TD]Hi[/TD]
[TD]Hi[/TD]
[TD]Hi[/TD]
[TD]Hi[/TD]
</tr>
</table>
从输出中可以看到,[TD]
和[/TD]
都已从表中删除,但是,如果您检查输出,则值将被移动到表的上方或下方由浏览器自动完成。
要解决此问题,您需要将这些项目保存在内存中。然后,您可以修改项目,然后将它们保存到表中。
let str = `[TD]Hi[/TD]
[TD]Hi[/TD]
[TD]Hi[/TD]
[TD]Hi[/TD]`
document.querySelector('#unchangedValues tr').innerHTML = str.replace(/\[(\/?TD)\]/g, '<$1>')
<table id="unchangedValues">
<tr>
</tr>
</table>
答案 4 :(得分:0)
您还可以使用Wiktor Stribiżew的regExp检查替换项。
if(str.indexOf('[TD]')!==-1 || str.indexOf('[/TD]')!==-1){str = str.replace(/\[(\/?TD)]/gi, '<$1>')}