javascript - 如何替换长文本子字符串中的特定字符?
问题描述
从javascript,给定这个多行文本(存储在一个变量中):
+++ diagramme
graph TD
A[fooA] ==> B[fooB]
style A color:blue
B --> C[(<img src="https://c7.alamy.com/compfr/jcdcx7/image-d-icone-de-soleil-jcdcx7.jpg" width="50">)]
C --> D[fooD]
B --> D
click D "https://fii.com" _blank
+++
我正在寻找一种方法将所有 " 替换为 img 标签中的 char '。在 img 标签中,属性的数量可能会有所不同。
在我的示例中,预期的结果是:
+++ diagramme
graph TD
A[fooA] ==> B[fooB]
style A color:blue
B --> C[(<img src='https://c7.alamy.com/compfr/jcdcx7/image-d-icone-de-soleil-jcdcx7.jpg' width='50'>)]
C --> D[fooD]
B --> D
click D "https://fii.com" _blank
+++
我知道如何使用正则表达式(感谢https://regex101.com/之类的神奇网站!),所以我可以使用这个简单的模式 /(<img)(.*)(>)/g 捕获 img 标签。但我不知道如何在通过正则表达式获得的子字符串中将所有出现的特定字符(此处“)替换为另一个(此处 ')。
编辑:img 标签的位置和数量在结构'+++ diagramme ... +++'中可能有所不同。下面是另一个例子:
+++ diagramme
graph TD
A[fooA] ==> B[(<img src="https://fuu/image1.jpg" width="50">)]
B --> C[fooC]
click B "https://faa.com" _blank
C --> D[(<img src="https://fuu/image2.jpg">)]
+++
和预期的结果:
+++ diagramme
graph TD
A[fooA] ==> B[(<img src='https://fuu/image1.jpg' width='50'>)]
B --> C[fooC]
click B "https://faa.com" _blank
C --> D[(<img src='https://fuu/image2.jpg'>)]
+++
谢谢你的帮助 :)
解决方案
使用回调函数:
const test = `+++ diagramme
graph TD
A[fooA] ==> B[fooB]
style A color:blue
B --> C[(<img src="https://c7.alamy.com/compfr/jcdcx7/image-d-icone-de-soleil-jcdcx7.jpg" width="50">)]
C --> D[fooD]
B --> D
click D "https://fii.com" _blank
+++`
console.log(test.replace(/<img[^>]*>/g, (x) => x.replace(/"/g, "'") ))
推荐阅读
- python-3.x - Python - 对包含字符串和整数的列表进行排序
- ruby-on-rails - 生产环境中的 ERR_SSL_PROTOCOL_ERROR 仅适用于 wifi
- python - Multiprocessing.Pool 未编译
- python - 如何从 xlsm 文件复制宏并将其插入另一个 xlsm 文件?
- flutter - 如何解决:“找不到吸气剂:'context'。”
- javascript - 完成anime.js动画时出现奇怪的剪辑
- flutter - Flutter:没有名为“home”的命名参数
- javascript - Loopback - 创建一个方法以使其在两个不同的模型中可访问
- swift - 如何在 Swift URLSession 中使用 cURL 请求
- nao-robot - 如何在 NAO V6(嵌入式)中安装 Python3?