2013-08-05 2 views
11

"+, -, *, /, ="기호를 따라갈 때 문자열을 분할하려고합니다. split 함수를 사용하고 있지만이 함수는 하나의 인수 만 취할 수 있습니다 또한 "+"에서 작동하지 않습니다. 다음 코드를 사용하고 있습니다. -하나 이상의 심볼에서 java로 문자열 분할하기

Stringname.split("Symbol"); 

감사합니다.

+0

javadoc을 처음 읽으셨습니까? '+'로 나뉘어서 왜 당신이 원하는 것을 얻지 못하는지에 대한 설명이 있어야합니다. –

+0

어쩌면보십시오 : http://stackoverflow.com/questions/7492672/java-string-split-by-multiple-character-delimiter – kadrian

답변

31

String.split는 인수로 정규 표현식을합니다.

즉, String을 분리하기 위해 하나의 매개 변수에서 기호 나 텍스트 추상화를 변경할 수 있습니다.

here 문서를 참조하십시오.

여기에 귀하의 경우 예입니다 :

String toSplit = "a+b-c*d/e=f"; 
String[] splitted = toSplit.split("[-+*/=]"); 
for (String split: splitted) { 
    System.out.println(split); 
} 

출력 :

a 
b 
c 
d 
e 
f 

주 : Pattern들에 대한

  • 예약 문자는 이중 이스케이프 \\으로해야합니다. 편집 : 여기서는 필요 없습니다.
  • 패턴의 대괄호 ([])는 문자 클래스를 나타냅니다.
  • Patterns에 대한 추가 정보.
+0

문자 클래스에서 해당 메타 문자를 이스케이프 할 필요가 없습니다. –

+0

@RohitJain 예, 그냥 실현.나는 내 대답을 편집했다. 지적 해 주셔서 고마워. – Mena

+0

이 작품이나 "+" – Saumyaraj

3

정규 표현식이 필요합니다. Addionaly 당신은 정규식 OR 연산자를 필요

String[]tokens = Stringname.split("\\+|\\-|\\*|\\/|\\="); 
9

당신은 정규 표현식을 사용할 수 있습니다

String[] tokens = input.split("[+*/=-]"); 

참고 : -가이 범위 구분 기호로 간주되지 않습니다 확인하기 위해 첫 번째 또는 마지막 위치에 배치해야합니다.

+1

Id는 "_ _ 반드시 두 번째가 아니어야 함"을 "_ 또는 첫 _ 또는 마지막 _에 있어야합니다."... – jlordo

+0

@jlordo'input.split ("[+ * -/=]");'잘 작동합니다 ... – assylias

+0

input.split ("[+ */- =]");'does not ... – assylias

1

이를 위해 적절한 정규식 문을 사용해야합니다. 목록에있는 대부분의 기호는 정규 표현식에 예약되어 있으므로 \으로 이스케이프 처리해야합니다.

매우 기본적인 표현은 \+|\-|\\|\*|\=입니다. 상대적으로 이해하기 쉽고 원하는 각 기호는 \으로 이스케이프되며 각 기호는 | (또는) 기호로 구분됩니다. 예를 들어 ^을 추가하려는 경우 해당 문구에 |\^을 추가하면됩니다.

테스트 및 빠른 표현을 위해 www.regexpal.com을 사용하고 싶습니다.

관련 문제