2014-04-21 2 views
2

아래 줄은 내 문자열을 (.), (,), (:) 및 줄 바꿈 문자 (\n)로 나눕니다.하이픈 문자로 분할 문자열 too

내가 너무 하이픈 문자 분할해야
String[] textPhrases = text.split("[.,:\\n]"); 

하지만이 작동하지 않습니다

I가 없거나 잘못을하고있는 중이 야 무엇
String[] textPhrases = text.split("[.,:/-/\\n]"); 

? 고맙습니다.

답변

3

이것은 정규식입니다. 하이픈은 문자 클래스 내에서 특별한 의미가 있습니다.

[-.,:\n] 
+0

일반적으로, 하나는 하이픈 탈출 할 수 있습니다'[을 :./\ -/\ n]'. 그러나 이는 구현에 따라 정의 될 수 있습니다. – usr2564301

+0

@Jongware 왜 탈출해야 할 때? 그냥 혼란을 더합니다. –

+0

어디에서나 하이픈을 삽입하려면 "해야합니다": Yours는 완벽하게 유효한 솔루션이지만 하이픈이 삽입되는 곳은주의해야합니다. 이스케이프 처리하면 어디서나 배치 할 수 있습니다. – usr2564301

2

내가 너무 하이픈 문자 분할해야하지만이 작동하지 않습니다 ... 나는 무엇을 놓치고 : 당신은 클래스의 또는 마지막 항목으로 하이픈을 배치해야 또는 잘못하고 있습니까?

이 그림에서 잘못된 점을 먼저 확인하려면 하이픈 주위에 문자 클래스 안에 슬래시가 있어야합니다. 대신 당신은 문자 클래스 [] 내에서 이스케이프 시퀀스 문자 (\\)

[.,:/-/\\n] 
    ^^^ Remove these and replace with the escape sequence character (\\-) 

를 사용해야합니다, 당신은 또는 마지막 문자로 하이픈 (-)를 배치 할 수 있습니다. 일치 시키려면 하이픈을 추가하려면이 문자를 ([.,:\\-\n]) 이스케이프 처리 할 수도 있습니다.

String s = "hey,hi.foo:bar\nbaz-quz"; 
String[] parts = s.split("[.,:\n-]"); 
System.out.println(Arrays.toString(parts)); 

출력

[hey, hi, foo, bar, baz, quz] 
0

당신은 사용해야합니다 :

String[] textPhrases = text.split("[.,:\\-\\n]");