我正在尝试使用正则表达式和一些规则来分割字符串:
- 字符串应分为 2 部分,第一部分至少包含 2 个字符
- 第二部分由以第一个数字开头(第二个字符之后)的所有字符组成
例如AB1234 = AB 和 1234,C56789 = C5 和 6789,ZYX3939Y = ZYX 和 3939Y
我有这个正则表达式,它几乎可以工作,但它丢失了它所分割的字符:
val t = request.number.split("(?<=.{2})[0-9]{1}", 2)
println(t(0), t(1))
给予:
(AB,234)
(C5,789)
(EZY,9393Y)
正确的正则表达式是什么?有更简单的方法吗?
最佳答案
您最好在 String
上使用 span
和 splitAt
方法。
val (twoFirst, rest) = request.number.splitAt(2)
val (noNumber, tail) = rest.span(!_.isDigit)
(twoFirst + noNumber, tail)
第一个 val
在第二个字符之后分割输入。
第二个 val
一旦找到数字就会分割输入。
关于java - Scala 中的拆分正则表达式保留分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485472/