簡體   English   中英

用[TD]代替 <TD> 用Java語言編寫

[英]Replacing [TD] with <TD> in Javascript

我有一個從Oracle進程返回的數據字符串,該字符串輸出[TD][/TD]而不是<TD></TD>來表示html表單元格。 我需要使用Javascript將[TD]轉換為<TD>並將[/TD]<TD> ,其元素的ID為constantValues。

我已經在這里搜索了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;
}

謝謝

您可以使用

 console.log( "[TD] and [/TD]".replace(/\\[(\\/?TD)]/gi, '<$1>') ) 

/\\[(\\/?TD)]/gi regex匹配

  • \\[ -一個[
  • (\\/?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>') ); 

任何標簽的通用解決方案,不僅限於[TD]

 console.log( 'Lorem [TD FOO="ipsum"] dolor sit [/TD] amet' .replace(/\\[([^\\]]+)\\]/g, '<$1>') ); 

僅使用方括號使用2 str.replace()怎么樣?

 var str = 'John [TD] Smith [/TD]'; var newstr = str.replace(/\\[/gi, '<').replace(/]/gi,'>'); console.log(newstr); 

如果您的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> 

您也可以用WiktorStribiżew的regExp檢查替換

if(str.indexOf('[TD]')!==-1 || str.indexOf('[/TD]')!==-1){str = str.replace(/\[(\/?TD)]/gi, '<$1>')}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM