나는 파이프문자를 스칼라로 분할하고 있습니다. 이 작업을 수행하는 데는 두 가지 옵션이 있습니다. 나는 다른 시나리오에서 두 가지 다른 결과를 얻는 것을보고 놀랐습니다.문자와 문자열을 스칼라로 나누는 것의 차이점
확인이 아웃이 예상대로 문자의 경우는 결과를 반환하면서
문자열의 경우, 그것은 또한 파이프 문자 반환.
나는이 두 가지의 차이점을 알고 싶어합니다.
나는 파이프문자를 스칼라로 분할하고 있습니다. 이 작업을 수행하는 데는 두 가지 옵션이 있습니다. 나는 다른 시나리오에서 두 가지 다른 결과를 얻는 것을보고 놀랐습니다.문자와 문자열을 스칼라로 나누는 것의 차이점
확인이 아웃이 예상대로 문자의 경우는 결과를 반환하면서
문자열의 경우, 그것은 또한 파이프 문자 반환.
나는이 두 가지의 차이점을 알고 싶어합니다.
. 그리고 |
은 정규 표현식의 세계에서 특수 문자입니다. 당신이 원하는 결과를 얻고 싶은 경우에
,
scala> val s1 = "abcdef"
s1: String = abcdef
scala> s1.split("|")
res7: Array[String] = Array(a, b, c, d, e, f)
당신의 \\
scala> val s1 = "abcdef"
s1: String = abcdef
scala> s1.split("\\|")
res7: Array[String] = Array(abcdef)
문자열의 경우 이스케이프 처리해야합니다. 사용 "\\|"
대신 "|"
정규 표현식이 될 수 String
매개 변수이 String
를 제공하는 경우 것입니다
scala> "a|b|c|d".split("|")
res19: Array[String] = Array(a, |, b, |, c, |, d)
scala> "a|b|c|d".split("\\|")
res20: Array[String] = Array(a, b, c, d)
scala> "a|b|c|d".split('|')
res21: Array[String] = Array(a, b, c, d)
scala> "a|b|c|d".split("""\|""")
res23: Array[String] = Array(a, b, c, d)
몇 가지 방법을 사용하여 |
을 탈출해야합니다 정규식 이스케이프 처리 :
scala> "a|b|c|d".split(raw"\|")
res114: Array[String] = Array(a, b, c, d)
scala> "a|b|c|d".split(raw"\Q|")
res115: Array[String] = Array(a, b, c, d)
scala> "a|b|c|d".split("""\Q|""")
res116: Array[String] = Array(a, b, c, d)
scala> "a|b|c|d".split("\\Q|")
res117: Array[String] = Array(a, b, c, d)
Variab les은 raw
문자열로 보간되므로 $
과 조심해야합니다.
\Q
은 여러 문자를 이스케이프 처리하고 각 문자 앞에 백 슬래시를 넣지 않으려 고 할 때 특히 유용합니다.