Javascript 将字符串匹配到部分匹配

2024-01-20

如何在 Javascript 中进行部分字符串匹配?

例如匹配“阿尔夫”

  • “阿尔弗雷德”-> 正确
  • “阿尔夫”-> 正确
  • 'alf' -> 真
  • 'al' -> 真
  • “改变”-> false
  • “一半”-> 假
  • '' -> 假
  • “鲍勃”-> 假

https://jsfiddle.net/zbzc5tqe/1/ https://jsfiddle.net/zbzc5tqe/1/

我欢迎更短/更多地使用 javascript 内置函数。

var arr = ['Alfred', 'Alf', 'alf', 'al', 'altered', 'half', '', 'bob'];

arr.forEach(function(element) {
  add(element + "->" + matches(element, 'Alf'));
});

function ignoreCase(s1, s2) {
  var needleRegExp = new RegExp('^' + s2 + "$", "i");
  return needleRegExp.test(s1)
}

function partializer(string) {
  var out = [];
  for (var i = 1; i < string.length; i++) {
    out.push(string.slice(0, i));
  }
  return out;
}

function matches(text, partial) {
  var parts = partializer(partial);
  for (var i = 0; i < parts.length; i++) {
    if (startsWith(text, parts[i])) {
      return true;
    }
  }
  return false;
}

function startsWith(text, element) {
  var s2 = text.split(0, element.length - 1);
  return ignoreCase(element, s2);
}

function add(text) {
  var olList = document.getElementById('list');
  var newListItem = document.createElement('li');
  newListItem.innerText = text;
  olList.appendChild(newListItem);
}
<ol id="list">
</ol>

似乎您只想知道字符串是否以子字符串开头:

function test(arr, sub) {
  sub = sub.toLowerCase();
  return arr.map(str => str
    .toLowerCase()
    .startsWith(sub.slice(0, Math.max(str.length - 1, 1)))
  );
}

var arr = ['Alfred', 'Alf', 'alf', 'al', 'altered', 'half', '', 'bob'];

var results = test(arr, 'alf');
console.log(results);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 将字符串匹配到部分匹配 的相关文章

  • 是否可以在没有 Javascript(仅 CSS)的情况下执行相同的操作(悬停效果)?

    我正在尝试创建一个带有图标的按钮像这样 http jsfiddle net pRdMc HTML div div class icon div span Send Email span div CSS button width 270px
  • 使用 npm 作为构建工具连接文件

    我最近发现我可以使用 npm 作为任务运行程序 而不是 gulp 或 grunt 到目前为止 一切都很棒 lint stylus jade uglify watch 等 但串联部分 我似乎无法实现 gulp 是这样的 gulp task s
  • 使用 jQuery / .data() 避免内存泄漏

    我正在使用 jQuery 动态创建 HTML 元素 现在需要针对它们存储 JavaScript 数据 但是 我现在担心内存泄漏 因为我实际上从未在对象上调用 删除 我 append 和 detach 它们 但从不 remove jQuery
  • 在 Javascript 中本地化字符串

    我目前正在使用 resx文件来管理我的 NET 服务器端资源 我正在处理的应用程序还允许开发人员将 JavaScript 插入各种事件处理程序中以进行客户端验证等 对我来说本地化 JavaScript 消息和字符串的最佳方法是什么 理想情况
  • 有没有办法监控页面上运行的 JavaScript 函数?

    有没有办法查看页面上正在执行哪些功能 如果我在页面上加载外部脚本 是否可以动态更改函数的功能或阻止其运行 HTML5 http www w3 org TR html5 scripting 1 html establish script bl
  • 缓存 firestore 中 get 的第一个实现

    我希望 firestore 每次都先从缓存中获取数据 根据 Firestore 文档 传递 缓存 或 服务器 选项必须启用相同的功能 下面的例子 db collection cities where capital true get cac
  • javascript 和 PHP 中的正则表达式有什么区别吗?

    这是在 javascript 中验证电子邮件地址的正则表达式 我不确定是否可以直接在 PHP 中使用它 a z d u00A0 uD7FF uF900 uFDCF uFDF0 uFFEF a z d u00A0 uD7FF uF900 uF
  • React/Redux bundle.js 太大

    我有一个小型的 React 项目 Webpack生成的bundle js大小为6 3Mb 如何将大小减小到 github webpack config js module exports devtool inline source map
  • 如何在提交表单之前删除自动数字格式?

    我正在使用 jQuery 插件自动数字 http www decorplanit com plugin 但是当我提交表单时 我无法删除之前字段上的格式POST 我尝试使用 input autonumeric destroy 和其他方法 但它
  • Nodemailer:从未收到问候语

    当尝试使用 Nodemailer 在 Node 内发送电子邮件时 https github com nodemailer nodemailer https github com nodemailer nodemailer 调用sendMai
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • JavaScript:从 JavaScript 调用锚标记的点击事件

    我有一个带有锚标记的页面 在我的 JavaScript 中 我设置HREF锚标记的属性基于一些 if else 条件动态变化 现在我想以编程方式调用锚标记的单击事件 我使用了下面的代码 但没有成功 var proxyImgSrc CostM
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • 如何检查元素的内容是否为空,如果是,则在 jquery 中删除该元素

    我目前正在尝试选择某个 div 内没有内容的任何 h2 元素并将其删除 这是我的 html 代码 div class skipToContainer h2 class vidSkipTo Hello h2 h2 class vidSkipT
  • 删除 Laravel Mix 中的临时文件

    我想在 laravel mix 构建期间或之后删除临时构建文件 这是我目前拥有的一些代码 但是del不工作 const mix require laravel mix const del require del compile sass i
  • Phonegap facebook 插件:android 的各种问题

    我正在尝试将 Phonegap 3 1 与 Phonegap facebook plugin 集成 以使我的应用程序能够使用 facebook 登录 https github com phonegap phonegap facebook p
  • ReferenceError 和全局对象

    在浏览器中的 JavaScript 中window是全局对象 这意味着在全局范围内定义的每个变量都是window 那么为什么我会得到这个结果 console log window foo No error logs undefined co
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • 如何在 JavaScript 中对关联数组进行排序?

    我需要为我的一个项目通过 JS 对关联数组进行排序 我发现这个函数在 Firefox 中运行得很好 但不幸的是它在 IE8 OPERA CHROME 中不起作用 无法找到使其在其他浏览器中运行的方法 或者找到另一个适合该目的的函数 我真的很
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字

随机推荐

  • 如何在android中将字节数组(.h264格式)解码为视频?

    在我的应用程序中 我必须将字节数组 即 h264 格式 解码为视频和来自直播的字节数组 代码如下 static final int VIDEO BUF SIZE 100000 static final int FRAME INFO SIZE
  • Jupyter 笔记本内存管理

    我目前正在 kaggle 中开发 jupyter 笔记本 在我的 numpy 数组上执行所需的转换后 我将其腌制以便可以将其存储在磁盘上 我这样做的原因是为了释放大数组消耗的内存 pickle 阵列后消耗的内存约为 8 7 GB 我决定运行
  • 游戏框架架构——视图组件还是MVC?

    我正在尝试为我的游戏构建一个非常轻量级的可重用框架 而不是每次开始游戏时都从头开始 我有一个组件驱动的架构 例如实体由Position组件 Health组件 Ai组件等组成 我最大的问题是我的模型组成视图组件允许模型有多个视图 或者是否使用
  • 如何在 R 中绘制度分布

    我想知道绘制度分布的脚本的输出是否正确 所以脚本是 其中带有我所有顶点度数的向量存储在 x 中 x is x 1 7 9 8 5 6 2 8 9 7 5 2 4 6 9 2 6 10 8 x 是某个网络顶点的度数 例如顶点 1 的度数为 7
  • React Native 适用于互联网带宽较低的小尺寸 apk

    我计划为互联网带宽较低的新兴市场开发一款应用程序 该应用程序严重需要互联网连接才能运行 我需要这个应用程序有一个小的 apk 大小 不超过10mb 并继续努力3G网络 根据我的研究 如果我删除x86来自 React Native 的 JS
  • 有没有好的 PostgreSQL linux 客户端? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我对 PostgreSQL 没有一个好的 Linux GUI 管理和开发工具感到沮丧 与仅限 Windo
  • 将子字符串包裹在 标签中,而无需在替换时创建嵌套标签

    我有一个单词数组 用于突出显示字符串中的单词 但是有些单词可能会作为短语的一部分出现 因此我希望该短语优先于突出显示中的单个单词 例如 seo apple apple tree orchard description In my orcha
  • 在 mySQL 中存储 javascript Date()

    我目前有一个 javascript 变量 它记录当前日期和时间 如下所示 var time of call time of call new Date 我需要将它存储在 MySQL 数据库中 当我尝试上传它时 该列仅显示为空白 但我不确定我
  • Node.js - 每个 Express 请求的域,在另一个域内

    Node js 中的错误处理啊 我正在尝试布局一个像这样的基本 Node 应用程序 集群 gt Worker gt 服务器域 gt 快速请求域 因此 如果由于有人在登录表单上拼错了自己的名字而将错误抛出到调用堆栈的 18 层深处 则整个服务
  • 在线程中更改Python“请求”模块的连接池大小

    编辑 也许我对这个错误的含义是错误的 这是否表明我的客户端的连接池已满 或者服务器的连接池已满 这是我的客户端收到的错误 我正在尝试制作大量http使用 python 并发请求threading and requests模块 我在日志中看到
  • Linux 上的 C++ 开发 Code::Blocks、EMACS 或 GVIM [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在多个项目之间共享声明式管道

    我在不同的存储库中有很多项目 它们共享相同的基本 CI 工作流程 我可以轻松地将其表达为声明式管道 pipeline agent any options buildDiscarder logRotator numToKeepStr 20 s
  • 使用相同关键字并条件 Django 查询

    我有一个带有发布模型和标签模型的 Django 应用程序 每份出版物都有一个或多个与其关联的标签 我想使用一组两个标签查询数据库 并且仅返回同时具有这两个标签的出版物 尽管我确信它很容易获得 但我似乎找不到它的语法 我想我没有使用正确的语言
  • 为什么我的应用程序没有绘制任何东西?

    我对 C 一般编程 非常陌生 阅读了 3 周的经验 从 html css 和 javascript 开始 现在开始使用 C 我正在尝试以 Windows 形式制作自己的简单 绘画 应用程序 但我遇到了一个问题 只是无法解决它 无论我阅读或遵
  • 如何在 Javascript 中替换字符串中的撇号?

    给定一个 Javascript 中的字符串 例如 var str this s kelly 我想用另一个字符替换撇号 这是我到目前为止所尝试过的 str replace quot A str replace A 这些都不起作用 我该怎么做
  • 追踪有用信息

    这里聪明的程序员如何跟踪他们在多年的经验中获得的方便的编程技巧和有用的信息 诸如有用的编译器参数 IDE 快捷方式 巧妙的代码片段等 当我查找一两年前我曾经知道的东西时 我有时会感到沮丧 我最喜欢的 IE 可能代表了 20 世纪 90 年代
  • Linq 多个 OR 与列表

    我目前正在开发一个使用 LINQ 的 C 项目 我想知道是否可以使用 Linq 创建一个 多个 OR 子句 并将列表作为 where 的条目 我的意思是这样的 var listofId var sqlQuery from T in myta
  • 加载共享库时出错:?:无法打开共享对象文件:没有这样的文件或目录

    我正在尝试诊断 并修复 位于多个组件边界上的问题 非常感谢任何有关如何获取更多信息或彻底解决问题的见解 我有一个应用程序 它作为 C 程序启动 可以启动 Java 程序 然后可以以递归方式启动相同的 C 程序 它已经在 Linux 和 Cy
  • 了解 WebSocket

    我的理解是 一个socket对应一个网络标识符 端口和TCP标识符 1 操作系统使进程能够与端口关联 IIUC 是使进程在网络上可针对入站数据进行寻址的一种方式 因此 WebSocket 服务器通常会与众所周知的用于接受和理解升级请求的 H
  • Javascript 将字符串匹配到部分匹配

    如何在 Javascript 中进行部分字符串匹配 例如匹配 阿尔夫 阿尔弗雷德 gt 正确 阿尔夫 gt 正确 alf gt 真 al gt 真 改变 gt false 一半 gt 假 gt 假 鲍勃 gt 假 https jsfiddl