首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加字符串中的每个数字

增加字符串中的每个数字
EN

Code Golf用户
提问于 2014-09-21 11:06:09
回答 21查看 9.9K关注 0票数 16

给定包含十进制数的字符串:

teststring134this 123test string54 100

将此字符串中的每个数字递增一个,以给出新的字符串。

teststring135this 124test string55 101

字符串可以如下所示:

  • 命令行参数
  • STDIN
  • 硬编码变量或函数参数

覆盖所有可能的职位:

  • 作为单词的前缀;123test124test
  • 作为单词的后缀;test123test124
  • 单词内部;te123stte124st
  • 独处test 123 testtest 124 test

下面是Python中的一种非高尔夫解决方案:

代码语言:javascript
复制
NUMBERS = '0123456789'

def increment(s):
    out = ''

    number = ''
    for c in s:
        if c in NUMBERS:
            number += c
        else:
            if number != '':
                out += str(int(number) + 1)
                number = ''
            out += c

    if number != '':
        out += str(int(number) + 1)
        number = ''

    return out


print "\"%s\"" % (increment('teststring134this 123test string54 100'))

这是一个code-golf问题,最短代码获胜。

EN

回答 21

Code Golf用户

发布于 2014-09-21 14:07:47

JavaScript (ES6) - 28

代码语言:javascript
复制
H=k=>k.replace(/\d+/g,k=>++k)

通过使用H("test 123 234t")运行。

票数 11
EN

Code Golf用户

发布于 2014-09-22 03:24:51

Vim - 13键击

代码语言:javascript
复制
0qqqqq^Al@qq@q

期望输入为当前行。

或对于8+ ceil(log(n))中的有限多个数字(例如999),击键:

代码语言:javascript
复制
0qq^Alq999@q
票数 11
EN

Code Golf用户

发布于 2014-09-21 11:20:16

Python2-59

将字符串作为变量n提供

代码语言:javascript
复制
import re;print re.sub('\d+',lambda x:`int(x.group())+1`,n)
票数 8
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/38033

复制
相关文章

相似问题

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