替换<;预处理>;标记为<;br>;javascript中的标记
我有一个像这样的html字符串替换<;预处理>;标记为<;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
<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;
};