ruby - 将一个字符串拆分为一个字符串和一个整数

标签 ruby regex string string-split

我有几个包含一位或多位数字的字符串,并且还可能在数字后面包含一个或多个字母(字母大写无关紧要)。字符串遵循以下正则表达式模式:

[0-9]+[a-zA-z]*

可能看起来像:

"15791"
"14810A"
"10480ABCD"
"5ABCDEFGH"

如果上面的字符串之一包含非数字字符,我如何将数字(第一部分)拆分为整数并将字母(第二部分)拆分为字符串?

我知道我可以像这样分割一个字符串:

array = "1,2,3,4".split(',')

但这没有用,因为我没有分隔符。

最佳答案

string.split 中使用基于正则表达式的正后向断言.

> "10480ABCD".split(/(?<=\d)(?=[A-Za-z])/)
=> ["10480", "ABCD"]
  • (?<=\d)正后视断言匹配项前面必须有一个数字字符。

  • (?=[A-Za-z])它断言匹配后必须跟一个字母表。所以上面的正则表达式将匹配数字和字母之间存在的边界。根据匹配的边界拆分您的输入将为您提供所需的输出。

使用 string.scan

> "10480ABCD".scan(/\d+|[A-Za-z]+/)
=> ["10480", "ABCD"]

关于ruby - 将一个字符串拆分为一个字符串和一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29119719/

相关文章:

php - 如何在 PHP 中触发正则表达式拒绝服务?

c - 使用 strncasecmp 搜索

javascript - Javascript 中不带前导零的打印时间

Ruby gem LoadError - ruby​​gems/defaults/operating_system

带欧元符号的 Ruby WriteExcel number_format

ruby-on-rails - HTTP POST 中的多个键/值对,其中键是相同的名称

css - 查找 CSS 注释的正则表达式中不必要的星号

python - 替换可变数量的组

iphone - 使用 MacRuby 测试 iPhone 应用程序?

python - 从特定字符后的字符串中提取数字