首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分解字母数字范围的库或算法

分解字母数字范围的库或算法
EN

Stack Overflow用户
提问于 2008-09-05 12:25:14
回答 4查看 807关注 0票数 1

我想知道是否有开源库或算法可以扩展非数字范围。例如,如果您有到9A1A,您应该得到

代码语言:javascript
运行
复制
1A, 2A, 3A, 4A, 5A, 6A, 7A, 8A, 9A.

我试过用谷歌搜索这个,我能想到的最好的是Regex,它可以用破折号(1-3变成1,2,3)来扩展数字。

EN

回答 4

Stack Overflow用户

发布于 2008-09-06 10:34:01

正如其他人所指出的,更具体的将是有用的。我认为你不能期望有一个库可以根据你能想出的字符串的任意顺序来生成范围。

如果您可以简单地定义任何给定字符串的后继者是什么,那么解决方案就非常简单。也就是说,如果你在字符串上有一个后继函数S (例如,使用S('3A') = '4A'),那么可以使用如下代码:

代码语言:javascript
运行
复制
s = initial_string
while s != final_string do
  output s
  s = S(s)
output s

我在过去用来生成具有给定长度l和给定范围be字符的所有字符串的代码如下(伪)代码。它可以很容易地适应各种变化。

代码语言:javascript
运行
复制
// initialise s with b at every position
for i in [0..l) do
  s[i] = b
done = false
while not done do
  output s
  j = 0
  // if s[j] is e, reset it to b and "add carry"
  while j < l and s[j] == e do
    s[j] = b
    j = j + 1
    if j == l then
      done = true
  if not done then
    s[j] = s[j] + 1

例如,要从特定字符串开始,只需更改初始化即可。要设置结束,您只需更改内部的行为,同时单独处理位置l (限制到该位置上的结束字符串中的字符,如果到达,则递减l)。

票数 1
EN

Stack Overflow用户

发布于 2008-09-05 12:45:56

我试图让它保持开放,因为可能性的数量是惊人的。我相信,如果不经过大量的技术细节,这个问题就不能在这里得到100%的回答,它被认为是一个“好”或“坏”的范围。我只是想找到一个跳跃点,看看别人是如何解决这个问题的。我希望有人写一篇博客文章,解释他们是如何解决这个问题的,或者创建一个完整的库来处理这个问题。

票数 0
EN

Stack Overflow用户

发布于 2008-09-05 13:06:43

我想说,解决方案的第一步将是定义字符和数字如何相互作用并形成一个序列。给定的示例不清楚,因为您至少会假设它运行1A,1B……8Y,8Z,9A -假设您的输入被限制为十进制,后跟单个字符。

如果你可以为字符和小数定义一个连续的序列,那么你只需要一些递归/循环就可以生成该序列的一部分。

例如,您可以假设输入中的每个字符都是(1-9A-Z)之一,因此您可以很容易地通过获取字母字符的十进制ascii值并减去55来使其连续,实际上得到的范围是(1-35)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档