如何从 JavaScript 中的字符串中删除单词数组?

2024-03-23

我有一个可以从字符串中删除单词的函数。这是 :

  var removeFromString = function(oldStr, fullStr) { 
    return fullStr.split(oldStr).join(''); 
  };

我这样使用它:

 console.log( removeFromString("Hello", "Hello World") ); // World
 console.log( removeFromString("Hello", "Hello-World") ); // -World

但主要问题是:

 var str = "Remove one, two, not three and four"; 

这里我们必须删除“一”、“二”和“四”。这可以通过以下方式完成:

var a = removeFromString("one, two,", str); // Remove not three and four
var b = removeFromString("and four", a); // Remove not three
console.log(b); // Remove not three

在上面的例子中,我不得不使用该函数两次。我希望它是这样的:

 var c = removeFromString(["one, two," , "and four"], str); // Remove not three
 console.log(c); // Remove not three

是的,我实际上想升级removeFromString函数!我怎样才能做到这一点 ?


您可以使用join并从数组动态构建正则表达式并替换匹配的值

function removeFromString(arr,str){
  let regex = new RegExp("\\b"+arr.join('|')+"\\b","gi")
  return str.replace(regex, '')
}

console.log(removeFromString(["one, two," , "and four"],"Remove one, two, not three and four" ));
console.log(removeFromString(["one" , "and four"],"Remove one, two, not three and four" ));
console.log(removeFromString(["Hello"], "Hello World") )

为了涵盖要匹配的单词可以包含元字符的情况,您可以通过这种方式扩展上面的示例

function escape(s) {
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};

function removeFromString(arr, str) {
  let escapedArr = arr.map(v=> escape(v))
  let regex = new RegExp("(?:^|\\s)"+escapedArr.join('|') + "(?!\\S)", "gi")
  return str.replace(regex, '')
}

console.log(removeFromString(["one, two,", "and four"], "Remove one, two, not three and four"));
console.log(removeFromString(["one", "and four"], "Remove one, two, not three and four"));
console.log(removeFromString(["Hello"], "Hello World"))
console.log(removeFromString(["He*llo"], "He*llo World"))
console.log(removeFromString(["Hello*"], "Hello* World"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 JavaScript 中的字符串中删除单词数组? 的相关文章

随机推荐

  • java.util.Vector - 替代品

    以前 当长度未知时 我一直认为 Vector 适合用于非描述性对象 据我所知 我认为它也是线程安全的 什么会改变这一点Vector不应再使用 有什么替代方案 你应该使用ArrayList代替Vector Vector使用内部同步 但这对于实
  • Android - 如何拦截“安装应用程序”意图

    好吧 所以不完全确定这是可能的 但尝试编写一个应用程序 以便我可以在执行以下任何活动之前运行一些代码 1 从网络下载 APK 并启动安装程序 2 在android市场上按下安装按钮 是否有可能拦截并提示这些事件 或者谷歌已经将这些东西锁定得
  • 如何在 css URL 中使用相对/绝对路径?

    我有一个生产和开发服务器 问题是目录结构 发展 http dev com subdir images image jpg http dev com subdir resources css style css 生产 http live co
  • 通过进程 ID 将 KeyEvent 发送到目标窗口

    我需要创建一个关键事件 cmd r 用于刷新浏览器窗口 并传递我尝试定位的窗口的进程 ID 比方说 let customEvent NSEvent keyEvent with NSEvent EventType keyUp location
  • 表达式集子集化

    我有一个ExpressionSet我想要子集的对象 例如 gt str ESet Formal class ExpressionSet package Biobase assayData phenoData STATUS num 1 210
  • 在python中将JSON存储到数据库中

    我定期从 API 获取一些数据 并希望将 JSON 数据存储到数据库中以便稍后访问和使用 从 API 中 我每次都会获取此样本中的数据 data cursor null files nodes u code u BOPhmYQg5Vm u
  • CLLocation距离位置(在Swift中?)

    有人可以帮我将以下 Objective C 语句转换为 Swift 吗 CLLocationDistance distance fromLocation distanceFromLocation toLocation 我知道做到这一点一定很
  • 标准库类型的赋值运算符的 ref 限定符

    我想知道 标准类型的赋值运算符没有左值引用限定是否有原因 他们都不是 因此 我们可以这样写 std string 42 std string s hello std string world oops std vector
  • 在jgit中配置known_hosts

    使用 jgit 和 gitolite 进行源代码控制 我有一个应用程序 可以根据命令生成某些代码 并且我们希望将其提交给源代码控制 目标是快速拉动 提交新代码 然后推送它 我有以下方法 private void commitToGitRep
  • 为什么 ISO/IEC 对 C 和 C++ 标准收费而不是免费提供?

    ISO C 标准 ISO IEC 9899 和 ISO C 标准 ISO IEC 14882 未在线发布 相反 人们必须购买每一项标准的 PDF 版本 我想知道这背后的基本原理是什么 对于 C 和 C 编程语言来说 这些语言的权威规范不能免
  • 静态 constexpr 类成员何时需要类外定义?

    我有以下 C 11 代码 简化版本 struct Info const char name int version class Base public const Info info Base Info info info info cla
  • Xaringan 幻灯片上的目录?

    我想知道是否可以将显示目录的幻灯片添加到使用 xaringan 包创建的文档中 谢谢 Update 以下几行将为您提供自动大纲 不幸的是 我不知道如何在 RStudio 中自动重新加载 R 脚本文件 如果有人知道什么 请随时在下面评论或回答
  • 如何将 Windows Update 设置为从不使用 PowerShell 检查更新?

    我正在寻找使用 PowerShell Windows Server 2008 R2 编写脚本的帮助 因此 Windows 更新设置为 从不检查更新 我找到了一些接近的答案 但我仍然无法做我想做的事 目前 我必须通过单击 Windows 更新
  • JQuery 对话框作为输入

    我不太习惯使用 jquery 对话框之类的东西 所以这是一个新手问题 此时 我正在使用提示来获取 SharePoint 中用户的回复 var answer dialog Type the text you want to display i
  • 使用 Spring RestTemplate 将嵌套 JSON 对象映射到 Java 类

    我知道这可能很简单 但是 我就是无法让它发挥作用 所以我尝试使用 Spring RestTemplate 来映射我的 JSON 数据 我有以下来自休息调用的 JSON 响应 message ok status ok data Name Yo
  • 熊猫合并 101

    我怎样才能执行 INNER LEFT RIGHT FULL OUTER JOIN和熊猫 合并后如何为缺失的行添加 NaN 合并后如何摆脱 NaN 我可以合并索引吗 如何合并多个 DataFrame 与 pandas 交叉连接 merge j
  • 动画 UIProgressView 的变化

    是否可以动画化 a 的变化UIProgressView以便显示能够平滑地移动到新值 有点像 NSProgressIndicator 那样 如果您对此感兴趣 请填写错误报告 Duplicate 5883058 Title UIProgress
  • 在 Ember.JS ember-cli 应用程序中包含引导库的推荐方法

    我正在尝试在当前的 ember cli 项目中正确安装 Twitter Bootstrap 我确实用 Bower 安装了 bootstrap bower install save bootstrap 现在库已下载到 vendor boots
  • 如何使用AES解密使用openssl命令加密的Java文件?

    我需要使用以下命令在 JAVA 中解密在 UNIX 中加密的文件 openssl aes 256 cbc a salt in password txt out password txt enc mypass mypass 我必须在 java
  • 如何从 JavaScript 中的字符串中删除单词数组?

    我有一个可以从字符串中删除单词的函数 这是 var removeFromString function oldStr fullStr return fullStr split oldStr join 我这样使用它 console log r