Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换<;预处理>;标记为<;br>;javascript中的标记_Javascript_Html_Regex_React Native - Fatal编程技术网

替换<;预处理>;标记为<;br>;javascript中的标记

替换<;预处理>;标记为<;br>;javascript中的标记,javascript,html,regex,react-native,Javascript,Html,Regex,React Native,我有一个像这样的html字符串 <div> <p> All set to go in. Finally in. </p> <pre> Yup this text is present inside of the pre tag. </pre> </div> export default (html: string): stri

我有一个像这样的html字符串

<div>
    <p>
        All set to go in.
        Finally in.
    </p>
    <pre>
        Yup this text is present 
        inside of the pre tag.
    </pre>
</div>
export default (html: string): string => {
  if (html.indexOf('<pre>') === -1) return html;
  const array = html.split('<pre>');
  let finalContent = '';
  for (let i = 0; i < array.length; i++) {
    if (i === 0) {
      finalContent = `${array[0]}<pre>`;
    } else {
      const secondArray = array[i].split('</pre>');
      finalContent = `${finalContent}${secondArray[0]
        .replace(/\r\n/g, '<br />')
        .replace(/[\r\n]/g, '<br />')}</pre>${secondArray[1]}`;
      if (i !== array.length - 1) finalContent = `${finalContent}<pre>`;
    }
  }
  return finalContent;
};


一切准备就绪。
终于进来了。

是的,这篇文章是存在的 在预标记的内部。
我想用标记替换预标记中的换行符

最终结果应该是



一切准备就绪。
终于进来了。

是的,此文本位于pre标记的内部。
到目前为止我试过什么? 我尝试用正则表达式来解决这个问题,并创建了如下的模式:-
/is(?=.*)/g
只能查找
标记之前的“is”。我还想在其中包括一个条件,即它应该在
标记之后。试试这个正则表达式


不符合我的条件,因为我不想替换所有出现的换行符。

不要使用正则表达式来解析/操作html,请使用简单的DOM函数

let html=`

一切准备就绪。
终于进来了。

是的,这篇文章是存在的 在预标记的内部。 `; 函数newlineToBr(str){ 设div=document.createElement('div'); div.innerHTML=str; from(div.getElementsByTagName('pre')).forEach(pre=>{ pre.innerHTML=pre.innerHTML.replace(/\n/g,“
”); }); 返回div.innerHTML; }
log(newlineToBr(html))不要使用正则表达式来解析/操作html,使用简单的DOM函数

let html=`

一切准备就绪。
终于进来了。

是的,这篇文章是存在的 在预标记的内部。 `; 函数newlineToBr(str){ 设div=document.createElement('div'); div.innerHTML=str; from(div.getElementsByTagName('pre')).forEach(pre=>{ pre.innerHTML=pre.innerHTML.replace(/\n/g,“
”); }); 返回div.innerHTML; }
log(newlineToBr(html))这里有一个简单的解决方案

导出默认值(html:string):string=>{
if(html.indexOf(“”)=-1)返回html;
常量数组=html.split(“”);
让finalContent='';
for(设i=0;i”)
.replace(/[\r\n]/g,“
”)}${secondArray[1]}`; 如果(i!==array.length-1)finalContent=`${finalContent}`; } } 返回最终内容; };
这里有一个简单的解决方案

导出默认值(html:string):string=>{
if(html.indexOf(“”)=-1)返回html;
常量数组=html.split(“”);
让finalContent='';
for(设i=0;i”)
.replace(/[\r\n]/g,“
”)}${secondArray[1]}`; 如果(i!==array.length-1)finalContent=`${finalContent}`; } } 返回最终内容; };
您可以在浏览器或节点中执行此操作吗?我使用的是react-native。
块的内容是一个字符串,为什么链接的问题不能提供解决方案?@Andreas链接的问题替换字符串中的所有断开行。但我只想替换标记中存在的内容。您可以在浏览器或节点中执行此操作吗?我使用的是react-native。块的内容是一个字符串,那么为什么链接的问题不能提供解决方案?@Andreas链接的问题替换字符串中存在的所有换行符。但我只想替换Tag中存在的那些。我想在react native中执行此操作,请创建一个接受string并返回修改过的string的方法好吗?当然可以@VishweshJainkuniya。用
函数
包围代码,因为您找不到文档。我必须在移动应用程序中运行此功能。我想在react native中执行此操作,您能创建一个接受字符串并返回修改后的字符串的方法吗?当然可以@VishweshJainkuniya。用
函数
包围代码,因为您找不到文档。我必须在移动应用程序中运行此功能。
export default (html: string): string => {
  if (html.indexOf('<pre>') === -1) return html;
  const array = html.split('<pre>');
  let finalContent = '';
  for (let i = 0; i < array.length; i++) {
    if (i === 0) {
      finalContent = `${array[0]}<pre>`;
    } else {
      const secondArray = array[i].split('</pre>');
      finalContent = `${finalContent}${secondArray[0]
        .replace(/\r\n/g, '<br />')
        .replace(/[\r\n]/g, '<br />')}</pre>${secondArray[1]}`;
      if (i !== array.length - 1) finalContent = `${finalContent}<pre>`;
    }
  }
  return finalContent;
};