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