替换字符串中最后一次出现的内容

JavaScriptJavaScriptBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索 JavaScript 中的 replaceLast 函数,该函数会用指定的替换内容替换给定字符串中某个模式的最后一次出现。本实验将指导你实现 replaceLast 函数,这将使你能够以更高效、灵活的方式操作字符串。完成本实验后,你将扎实理解如何替换字符串中某个模式的最后一次出现,并能够将此知识应用到你未来的编程项目中。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/BasicConceptsGroup(["`Basic Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript/BasicConceptsGroup -.-> javascript/variables("`Variables`") javascript/BasicConceptsGroup -.-> javascript/data_types("`Data Types`") javascript/BasicConceptsGroup -.-> javascript/arith_ops("`Arithmetic Operators`") javascript/BasicConceptsGroup -.-> javascript/comp_ops("`Comparison Operators`") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("`Conditional Statements`") javascript/AdvancedConceptsGroup -.-> javascript/template_lit("`Template Literals`") subgraph Lab Skills javascript/variables -.-> lab-28594{{"`替换字符串中最后一次出现的内容`"}} javascript/data_types -.-> lab-28594{{"`替换字符串中最后一次出现的内容`"}} javascript/arith_ops -.-> lab-28594{{"`替换字符串中最后一次出现的内容`"}} javascript/comp_ops -.-> lab-28594{{"`替换字符串中最后一次出现的内容`"}} javascript/cond_stmts -.-> lab-28594{{"`替换字符串中最后一次出现的内容`"}} javascript/template_lit -.-> lab-28594{{"`替换字符串中最后一次出现的内容`"}} end

替换字符串中某个模式最后一次出现的函数

以下是一个用于替换字符串中某个模式最后一次出现位置的函数:

const replaceLast = (str, pattern, replacement) => {

要使用它,请打开终端/SSH 并输入 node

  • 首先,使用 typeof 来确定 pattern 是字符串还是正则表达式。
  • 如果 pattern 是字符串,则将其用作 match
  • 否则,使用 RegExp 构造函数,根据 patternRegExp.prototype.source 创建一个新的正则表达式,并添加 'g' 标志。使用 String.prototype.match()Array.prototype.slice() 获取最后一个匹配项(如果有的话)。
const match =
  typeof pattern === "string"
    ? pattern
    : (str.match(new RegExp(pattern.source, "g")) || []).slice(-1)[0];
  • 使用 String.prototype.lastIndexOf() 找到字符串中匹配项的最后一次出现位置。
  • 如果找到匹配项,则使用 String.prototype.slice() 和模板字面量将匹配的子字符串替换为给定的 replacement
  • 如果未找到匹配项,则返回原始字符串。
  if (!match) return str;
  const last = str.lastIndexOf(match);
  return last!== -1
   ? `${str.slice(0, last)}${replacement}${str.slice(last + match.length)}`
    : str;
};

以下是一些使用该函数的示例:

replaceLast("abcabdef", "ab", "gg"); // 'abcggdef'
replaceLast("abcabdef", /ab/, "gg"); // 'abcggdef'
replaceLast("abcabdef", "ad", "gg"); // 'abcabdef'
replaceLast("abcabdef", /ad/, "gg"); // 'abcabdef'

总结

恭喜你!你已经完成了“替换字符串中最后一次出现的内容”实验。你可以在 LabEx 中练习更多实验来提升你的技能。

您可能感兴趣的其他 JavaScript 教程