2
와트는 숫자와 문자의 조합을 포함 할 수있는 문자열을 숫자와 문자의 그룹으로 나눌 수 있지만 순서를 유지하는 관용적 인 방법입니다.스칼라에서 숫자와 글자를 나누는 방법은 무엇입니까?
예 :
X45C -> X-45-C
5K -> 5-K
어떻게 그것을 구현하는 우아한 방법이 될 것이다?
와트는 숫자와 문자의 조합을 포함 할 수있는 문자열을 숫자와 문자의 그룹으로 나눌 수 있지만 순서를 유지하는 관용적 인 방법입니다.스칼라에서 숫자와 글자를 나누는 방법은 무엇입니까?
예 :
X45C -> X-45-C
5K -> 5-K
어떻게 그것을 구현하는 우아한 방법이 될 것이다?
정규 표현식에! \D
이 올바른 선택이 실제 입력에 따라 경우
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)) */
, 자세한 내용은 pattern docs를 참조하십시오.
는은 아마 이런 식으로 뭔가 도움이 될 수 있습니다 :
"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"