我正在构建一个自动完成功能,它可以搜索CouchDB视图。
我需要能够获取输入字符串的最后一个字符,并将最后一个字符替换为英语字母表的下一个字母。(这里不需要i18n)
例如:
*输入字符串=“B”
*启动键=“B”
*结束键=“c”
- 或 *
*输入字符串=“foo”
*启动键=“foo”
*结束键=“fop” - (如果您想知道,我会确保包含选项
inclusive_end=false
,这样这个额外的字符就不会污染我的结果集)*
问题
- Javascript中有没有一个函数可以直接得到字母表中的下一个字母?
- 或者我只需要接受它,然后用一个像“abc...xyz”和
indexOf()
这样的基字符串执行我自己的花哨函数?
7条答案
按热度按时间tsm1rwdh1#
一个更全面的解决方案,它根据MS Excel对其列编号的方式获取下一个字母...
A B C ... Y Z AA AB ... AZ BA ... ZZ AAA
这适用于小写字母,但您也可以轻松扩展它用于大写字母。
31moq8wy2#
这里有一个函数做同样的事情(除了只使用大写,但这很容易改变),但只使用
slice
一次,而且是迭代的而不是递归的。在一个快速的基准测试中,它大约快了4倍(这只有在你大量使用它的时候才有意义!)。ljo96ir53#
只解释Bipul Yadav编写的代码的主要部分(由于缺少代表,还不能评论)。不考虑循环,只以字符“a”为例:
“a”.charCodeAt(0)= 97...因此,“a”.charCodeAt(0)+ 1 = 98并且String.fromCharCode(98)=“B”...因此,针对任何字母的以下函数都将返回字母表中的下一个字母:
anhgbhbe4#
5n0oy7gb5#
我知道最初的问题是关于将字符串的最后一个字母向前移动到下一个字母。但是我个人对这个问题更感兴趣的是改变字符串中的所有字母,然后能够撤销它。所以我用了Bipul Yadav写的代码,并添加了一些代码。下面的代码用了一系列字母,将它们中的每一个递增到下一个字母保持大小写(并使Zz变为Aa),然后将它们回滚到前一个字母(并允许Aa回到Zz)。
其输出为:
7vux5j2d6#
bf1o4zei7#
//这将为Z返回A,为z返回a。