복붙노트

[SCALA] 스칼라 사항 String.split는 일을하지 않습니다

SCALA

스칼라 사항 String.split는 일을하지 않습니다

다음은 내 REPL 출력입니다. 사항 String.split 여기에 작동하지 않는 이유는 확실하지 않다.

val s = "Pedro|groceries|apple|1.42"
s: java.lang.String = Pedro|groceries|apple|1.42

scala> s.split("|")
res27: Array[java.lang.String] = Array("", P, e, d, r, o, |, g, r, o, c, e, r, i, e, s, |, a, p, p, l, e, |, 1, ., 4, 2)

해결법

  1. ==============================

    1.당신이 따옴표를 사용하는 경우, 당신은 정규 표현식 분할을 요구하고 있습니다. | 당신의 정규식 아무것도 또는 아무것도 일치하지 않도록 "또는"문자이다. 그래서 모든 분할이다.

    당신이 따옴표를 사용하는 경우, 당신은 정규 표현식 분할을 요구하고 있습니다. | 당신의 정규식 아무것도 또는 아무것도 일치하지 않도록 "또는"문자이다. 그래서 모든 분할이다.

    당신이 분할 ( '|')를 사용하는 경우 또는 분할 ( "", "\ |" "") 당신은 당신이 원하는 것을 얻을 수 있습니다.

  2. ==============================

    2.| 또는 작업을위한 논리 연산자로 사용되는 특수 정규 표현식 문자입니다.

    | 또는 작업을위한 논리 연산자로 사용되는 특수 정규 표현식 문자입니다.

    java.lang.String의 번호 분할 (문자열 정규식) 이후; 넌 분할, 정규 표현식에서 누구도 본질적으로 "모든 단일 문자 사이의"의미 정규 표현식 분할에 대한 또 다른 명물 전체이다 "없음 또는 없음"을 가진 문자열을 사용합니다.

    당신이 원하는 것을 얻으려면, 당신은 제대로 정규식 패턴을 탈출해야합니다. 패턴을 탈출하려면 \로 문자를 씁니다과 \ 특수 문자열 문자이기 때문에 (생각 \ t 예를 들어 및 \ R), 당신은 당신이 (s.split하게 될 겁니다 너무 실제로 두 탈출에 필요 "\\ |").

    전체 자바 정규 표현식 구문에 대해서는 있으며, java.util.regex.Pattern의 javadoc을 참조하십시오.

  3. ==============================

    3.전화가 "빈 문자열 또는 빈 문자열"로 해석되도록 분할, 첫 번째 인수로 정규식 걸립니다. 예상되는 동작을 얻으려면 파이프 문자 "\\ |"탈출해야합니다.

    전화가 "빈 문자열 또는 빈 문자열"로 해석되도록 분할, 첫 번째 인수로 정규식 걸립니다. 예상되는 동작을 얻으려면 파이프 문자 "\\ |"탈출해야합니다.

  4. from https://stackoverflow.com/questions/11284771/scala-string-split-does-not-work by cc-by-sa and MIT license