如何在scala中拆分数字和字母?

时间:2012-08-11 14:10:17

标签: regex scala

Waht将是一种惯用的方法,可以将包含数字和字母组合的字符串拆分为数字和字母组,但保留顺序。)

例如:

X45C -> X-45-C
5K -> 5-K

如何以优雅的方式实现它?

2 个答案:

答案 0 :(得分:4)

正规救援!

val xs = List("X45C", "5K")
val ys = xs map {x => """\d+|\D+""".r.findAllIn(x).toList}

println(ys)
  /* List(List(X, 45, C), List(5, K)) */

如果\D是正确的选择取决于实际输入,请参阅pattern docs以获取更多信息。

答案 1 :(得分:0)

这样的事情可能会有所帮助:

"x12y 1y2 QW23ER"
    .replace(/([a-z])([0-9])/gi,"$1-$2")
    .replace(/([0-9])([a-z])/gi,"$1-$2");

// OUTPUT: "x-12-y 1-y-2 QW-23-ER"