有什么方法可以用来增加字母?

2023-11-21

有谁知道 Javascript 库(例如 underscore、jQuery、MooTools 等)提供了递增字母的方法?

我希望能够做类似的事情:

"a"++; // would return "b"

简单、直接的解决方案

function nextChar(c) {
    return String.fromCharCode(c.charCodeAt(0) + 1);
}
nextChar('a');

正如其他人所指出的,缺点是它可能无法按预期处理字母“z”等情况。但这取决于你想从中得到什么。上面的解决方案将为“z”后面的字符返回“{”,这是 ASCII 中“z”后面的字符,因此它可能是您正在寻找的结果,具体取决于您的用例。


独特的字符串生成器

(更新于2019/05/09)

由于这个答案已经得到了如此多的关注,我决定将其扩展到原始问题的范围之外,以潜在地帮助那些在谷歌上遇到这个问题的人。

我发现我经常想要的是能够在特定字符集中生成连续的、唯一的字符串(例如仅使用字母),因此我更新了这个答案以包含一个可以在此处执行此操作的类:

class StringIdGenerator {
  constructor(chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {
    this._chars = chars;
    this._nextId = [0];
  }

  next() {
    const r = [];
    for (const char of this._nextId) {
      r.unshift(this._chars[char]);
    }
    this._increment();
    return r.join('');
  }

  _increment() {
    for (let i = 0; i < this._nextId.length; i++) {
      const val = ++this._nextId[i];
      if (val >= this._chars.length) {
        this._nextId[i] = 0;
      } else {
        return;
      }
    }
    this._nextId.push(0);
  }

  *[Symbol.iterator]() {
    while (true) {
      yield this.next();
    }
  }
}

Usage:

const ids = new StringIdGenerator();

ids.next(); // 'a'
ids.next(); // 'b'
ids.next(); // 'c'

// ...
ids.next(); // 'z'
ids.next(); // 'A'
ids.next(); // 'B'

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

有什么方法可以用来增加字母? 的相关文章

随机推荐

  • 使用node.js读取Excel文件

    好的 所以我正在使用FileUploader将我的文件从 Angular 上传到我的模块REST API var uploader scope uploader new FileUploader url api getUrl uploadC
  • JavaScript:如何找出浏览器窗口中视口的宽度和高度?

    如何找出浏览器窗口中视口的宽度和高度 如何找出有多少文档向下和向右滚动 尝试这个函数 并在需要时调用它 function getViewPortSize var viewportwidth var viewportheight Standa
  • Emberjs 异步路由

    我的问题与问题相关 1183 and 1268emberjs 的 我在路线上有动态元素 如果我通过应用程序导航 一切都可以 问题是当我重新加载页面或输入网址时 在这种情况下 应用程序进入反序列化函数并通过其 id 加载和对象 但此加载是异步
  • 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

    什么是ArrayIndexOutOfBoundsException意思是我该如何摆脱它 下面是触发异常的代码示例 String names tom bob harry for int i 0 i lt names length i Syst
  • 存储过程返回错误的标量值 -1,而不是返回值

    我正在尝试从存储过程返回标量值 我实际上想返回新创建的记录的 ID 但我已将问题简化为需要一个存储过程int并尝试返回相同的内容int 这始终返回 1 非常感谢您的帮助 Web API 控制器调用 var idtest dbconn my
  • 使 JComponent 适合/缩放到正在打印的页面

    我正在尝试缩放我的组件 以便它可以适合单个打印页面 纵向或横向 gDiagram getComponent 是我要打印的组件 JPanel 这是我到目前为止所得到的基于如何打印单个 JPanel 的内容 Prints the diagram
  • 如何使用重载的显式转换运算符?

    我在 C 中定义了一个类型 如下所示 struct F public static explicit operator F long value public static explicit operator long F value pu
  • 将 Python 项目提交到 Dataproc 作业

    我有一个 python 项目 其文件夹具有以下结构 main directory lib lib py run script py script py is from lib lib import add two spark SparkSe
  • 用Java模拟文件

    我正在尝试为采用字符串文件名的方法编写单元测试 然后打开文件并从中读取 因此 为了测试该方法 我考虑编写一个文件 然后调用我的方法 但是 在构建场中 不可能将文件任意写入磁盘 是否有一种标准方法可以在单元测试中 模拟 真实文件 我发现Moc
  • JavaFX - 使 ScrollPane 自动滚动

    我在 ScrollPane 中有一个标签 我正在循环中更新标签 在另一个线程中 如果用户没有将 ScrollPane 保持在某个位置 如何更新 ScrollPane 使其向下滚动 不是横向滚动 这将手动完成 有一个设置器吗 要将 Scrol
  • 如何隐藏操作栏中的向上按钮

    我想做一个编辑模式 采用平板电脑 Gmail 应用程序的风格 如果用户按下操作栏上的编辑按钮 我想向他 她显示一个操作视图 该视图左侧有一个完成按钮 右侧有一个删除按钮 我这里有一个无需 actionbarsherlock 即可工作的示例
  • 如何正确实现 IDisposable

    作为一名开发人员 我见过很多 C 代码 它们试图通过将变量设置为 null 或在自己的类 Dispose 方法中调用类 例如 DataSet 上的 Dispose 来帮助 GC 我一直想知道是否需要在托管环境中实施它 这段代码的设计模式是否
  • Rails javascript 仅在重新加载后才起作用

    问题正是标题所说的 javaScript 位于资产管道中 即 assets javascripts myfile js coffee 在 application js 中我有 require jquery require jquery uj
  • 我们如何获取 IAM 用户、他们的组和策略?

    我需要获取所有 aws 用户及其相应的组 策略 然后获取是否为他们激活了 MFA 谁能告诉我如何通过 aws cli 或 boto 来完成它 我有一个脚本可以提取 aws 中的所有用户 import boto3 from boto3 imp
  • 猫鼬精益查询,虚拟值未显示

    我在猫鼬上设置了以下架构 我使用版本 3 6 17 var PostSchema new Schema id type String required true index unique true video type String def
  • 如何从浅克隆中有效地进行 git fetch

    We use git 分发操作系统并使其保持最新 我们无法分发完整的存储库 因为它太大 gt 2GB 因此我们一直使用浅克隆 300M 然而最近 当从浅克隆中获取时 它现在无法有效地获取整个 gt 2GB 存储库 这是对部署带宽的一种难以忍
  • 为什么 DROP TABLE 在 SELECT INTO 之前似乎没有生效?

    下面的 SQL 查询让我感到困惑 select 1 as FIELD into TEMP drop table TEMP select 1 as FIELD into TEMP When I run it from SQL Server M
  • 使用 VBA 将单元格值范围分配给变量数组

    我对 VBA 很陌生 请耐心等待 我想为一组变量分配一组范围的值 即 运行一段简短的代码以简化以下操作 Dim Sample 1 as string Sample1 activeworksheet range C17 value Dim S
  • 创建一个 chrome 扩展,它获取页面上突出显示的文本并将其插入到 popup.html 中的文本区域中

    我花了几个小时在网上搜索解决方案 我想做的是将页面上突出显示的文本传输到 chrome 扩展的 popup html 中的文本区域 我想知道是否有人可以向我提供可以执行此操作的扩展的建议源代码 这是我看过的最相关的线程 我认为这是最有帮助的
  • 有什么方法可以用来增加字母?

    有谁知道 Javascript 库 例如 underscore jQuery MooTools 等 提供了递增字母的方法 我希望能够做类似的事情 a would return b 简单 直接的解决方案 function nextChar c