2010-04-17 5 views
1

문자열이있는 경우Java split 정규 표현식

setting=value 

어떻게 '='을 제거하고이를 '설정'과 '값'을 포함하는 두 개의 별도 문자열로 변환 할 수 있습니까?

대단히 감사합니다.

답변

10

마음에 두 가지 옵션이 있습니다.

첫 번째 split()는이야 String=에 :

Pattern p = Pattern.compile("(.*?)=(.*)"); 
Matcher m = p.matcher(s); 
if (m.matches()) { 
    String name = m.group(1); 
    String value = m.group(2);  
} 

두 번째는 당신에게 더 많은 힘을 준다 : 두 번째는 String 구문 분석에 직접 정규 표현식에 사용

String[] pieces = s.split("=", 2); 
String name = pieces[0]; 
String value = pieces.length > 1 ? pieces[1] : null; 

. 예를 들어, 패턴을 다음과 같이 변경하면 공백을 자동으로 잃을 수 있습니다.

Pattern p = Pattern.compile("\\s*(.*?)\\s*=\\s*(.*)\\s*"); 
1

당신은 이것에 대한 정규 표현식을하지 않아도, 단지 수행

String str = "setting=value"; 
String[] split = str.split("="); 
// str[0] == "setting", str[1] == "value" 

당신은 그것의 = 너무 가질 수 limitvalue 경우 설정할 수 있습니다; javadoc

+1

그렇다고 정규 표현식을 사용하고 있습니다. 예를 들어,'? '로 분리하고 싶다면'str.split ("?")'만 쓸 수는 없습니다. 당신은 그것을'str.split ("\\?")'로 이스케이프 처리해야합니다. – polygenelubricants

+0

아, 그렇습니다. 자바의 String.split은 정규 표현식을 사용합니다. 대부분의 언어는 문자열로 분리됩니다. –