用文本中的降价链接替换特定单词
Replace specific words with markdown links in a text
我有一个文本保存在一个较长的字符串中,我想用突出显示的版本或降价替换文本中的一些词 link 到描述这些词的词汇表页面。应该过滤的词存储在一个字符串数组中。
目前我的代码看起来像这样:
const text = "Lorem ipsum xxx dolor sit amet."
const highlightedWords = ["xxx", "yyy"]
const newText = text.replace(new RegExp(highlightedWords.join("|"), "gi"), "[same-word-here]('/glossary#same-word-here)');
有same-word-here的部分应该是之前替换的同一个词,但是我不知道怎么把这个放在这个位置
如果您需要一个更广为人知的示例:它应该看起来像维基百科文本中 linked 的文章
感谢您的帮助。
将表达式包裹在捕获组 ()
中,然后使用 </code> 来使用捕获组的内容。您还应该使用 <code>\b
(单词边界)来防止在其他作品中替换文本,例如“xxxzzz”。
const text = "Lorem ipsum xxx dolor sit amet."
const highlightedWords = ["xxx", "yyy"]
const newText = text.replace(new RegExp(`\b(${highlightedWords.join("|")})\b`, "gi"), "[]('/glossary#same-word-here)'");
console.log(newText)
如果我对你的目标的理解正确,你不需要正则表达式,因为你有一个单词数组可以遍历。
let text = 'Lorem ipsum xxx dolor sit yyy amet.';
const highlightedWords = ['xxx', 'yyy'];
for (word of highlightedWords) {
if (text.includes(word))
text = text.replace(word, `[${word}]('/glossary#${word})`);
}
console.log(newText);
// result: Lorem ipsum [xxx]('/glossary#xxx) dolor sit [yyy]('/glossary#yyy) amet.
或者使用一个新变量,以便在需要时仍然拥有原始变量
const text = 'Lorem ipsum xxx dolor sit yyy amet.';
const highlightedWords = ['xxx', 'yyy'];
let newText = text;
for (word of highlightedWords) {
if (newText.includes(word))
newText = newText.replace(word, `[${word}]('/glossary#${word})`);
}
console.log(newText);
// result: Lorem ipsum [xxx]('/glossary#xxx) dolor sit [yyy]('/glossary#yyy) amet.
我有一个文本保存在一个较长的字符串中,我想用突出显示的版本或降价替换文本中的一些词 link 到描述这些词的词汇表页面。应该过滤的词存储在一个字符串数组中。
目前我的代码看起来像这样:
const text = "Lorem ipsum xxx dolor sit amet."
const highlightedWords = ["xxx", "yyy"]
const newText = text.replace(new RegExp(highlightedWords.join("|"), "gi"), "[same-word-here]('/glossary#same-word-here)');
有same-word-here的部分应该是之前替换的同一个词,但是我不知道怎么把这个放在这个位置
如果您需要一个更广为人知的示例:它应该看起来像维基百科文本中 linked 的文章
感谢您的帮助。
将表达式包裹在捕获组 ()
中,然后使用 </code> 来使用捕获组的内容。您还应该使用 <code>\b
(单词边界)来防止在其他作品中替换文本,例如“xxxzzz”。
const text = "Lorem ipsum xxx dolor sit amet."
const highlightedWords = ["xxx", "yyy"]
const newText = text.replace(new RegExp(`\b(${highlightedWords.join("|")})\b`, "gi"), "[]('/glossary#same-word-here)'");
console.log(newText)
如果我对你的目标的理解正确,你不需要正则表达式,因为你有一个单词数组可以遍历。
let text = 'Lorem ipsum xxx dolor sit yyy amet.';
const highlightedWords = ['xxx', 'yyy'];
for (word of highlightedWords) {
if (text.includes(word))
text = text.replace(word, `[${word}]('/glossary#${word})`);
}
console.log(newText);
// result: Lorem ipsum [xxx]('/glossary#xxx) dolor sit [yyy]('/glossary#yyy) amet.
或者使用一个新变量,以便在需要时仍然拥有原始变量
const text = 'Lorem ipsum xxx dolor sit yyy amet.';
const highlightedWords = ['xxx', 'yyy'];
let newText = text;
for (word of highlightedWords) {
if (newText.includes(word))
newText = newText.replace(word, `[${word}]('/glossary#${word})`);
}
console.log(newText);
// result: Lorem ipsum [xxx]('/glossary#xxx) dolor sit [yyy]('/glossary#yyy) amet.