数字与字母的Ruby分割

数字与字母的Ruby分割,ruby,regex,Ruby,Regex,我想在字母上拆分以下字符串: 1234B 始终只有4位数字和一个字母。我只想把它们分开 这是我的尝试,我认为我的方法是正确的,正则表达式与数字匹配,但我认为我的语法或正则表达式与我试图解决的问题无关 "1234A".split(/^\d{4}/) 如果始终有4位数字和1个字母,则无需使用正则表达式拆分字符串。只要这样做: str = "1234A" digits,letter = str[0..3],str[4] 您想要什么还不清楚,但这种情况的一般解决方案是: "1234A".scan(

我想在字母上拆分以下字符串:

1234B
始终只有4位数字和一个字母。我只想把它们分开

这是我的尝试,我认为我的方法是正确的,正则表达式与数字匹配,但我认为我的语法或正则表达式与我试图解决的问题无关

"1234A".split(/^\d{4}/)
如果始终有4位数字和1个字母,则无需使用正则表达式拆分字符串。只要这样做:

str = "1234A"
digits,letter = str[0..3],str[4]

您想要什么还不清楚,但这种情况的一般解决方案是:

"1234A".scan(/\d+|\D+/)
# => ["1234", "A"]

纯粹从将任何字符串拆分为4组的角度来看:

"1234A".scan(/.{1,4}/)
# => ["1234", "A"]

另一个无正则表达式版本:

str = "1234A"

str.chars.to_a.last # => "A"
str.chop            # => "1234"

所以,你想在字母上分开。你为什么要用“非数字”来代替呢?你知道,还有其他的角色类别。标点符号和类似的东西:)还有,用“拆分”来定义你的意思。在该输入上发布操作的预期结果。您能给出一个示例,说明吐出的结果是什么吗?使用
chars
然后转换为数组是一种复杂的方法。关于
str[-1]
?看起来OP在这个(简单的)问题上遇到了麻烦-这就是为什么我想提供一个或多或少可读的答案。对于Ruby新手来说,我认为<>代码> STR.CARS。Tooa.最后比“代码> STR(-1)更具意图揭示性。我不认为任何人能想出一个比亚历克斯更简单的答案,但我想,向大家展示有很多不同的方法来解决这个问题并没有什么坏处。