2014-04-27 7 views
2

파일에 작성된 일부 샘프 데이터가 있습니다. 데이터 형식은 다음과 같습니다.'['및 ']'로 구분 된 문자열 분할

[Peter Jackson] [UK] [United Kingdom] [London].... 

'['및 ']'로 구분 된 정보를 추출해야합니다. 내가 찾은 있도록 -

Peter Jackson 
UK 
United Kingdom 
London 
... 
... 

나는 너무 잘 문자열 분할로 알려져 있지 않다. 나는 그들이 단 하나의 문자 (예를 들어 - string1-string2-string3 -....)로만 분리 될 때 문자열을 분리하는 방법을 알고있다. 누가 위의 시나리오에 대해 나를 도울 수 있습니다. 미리 감사드립니다.

답변

2

이렇게하려면 regex를 사용해야합니다.

Pattern p = Pattern.compile("\\[(.*?)\\]"); 
Matcher results = p.matcher("[Peter Jackson] [UK] [United Kingdom] [London]...."); 

while (results.find()) { 
    System.out.println(results.group(1)); 
} 
2

는이 정규식 사용할 수 있습니다

\\[(.+?)\\] 

을 그리고 캡처 그룹은 콘텐츠를해야합니다.

죄송합니다. 코드를 추가하지 않으 셨습니다. 나는 자바

+0

고마워요. 나는 그것을 시도 할 것이다 – pksaha

+0

자바에서는 string.split (정규식) –

+1

이 될 것이다. @BrianJ : 아니오, 일치를 찾기 위해 정규 표현식을 사용해야 할 것이다. –

1

시도가

String str = "[Peter Jackson] [UK] [United Kingdom] [London]"; 
    str = str.replace("[", ""); 
    str = str.replace("]", ""); 

를 교체 모른다 그리고 당신은 그것을 분할 시도 할 수 있습니다.

+0

그건 * (중요한!) 분리 기호를 제거합니다! 더 이상 나머지 문자열을 안정적으로 분할 할 수 없습니다. – usr2564301

+0

사실, 그것에 대해 생각하지 않았어! 그래서 당신은 당신을 대체하기 전에 분할해야합니다. – eliasah

1

"]에 분할 ["같이 당신을 분류한다 :이 후

\] \[ 

Regular expression visualization

Debuggex Demo

, 바로 '['를 교체하고 '] '그리고 개행을 사용하여 참여하십시오.

2

각 항목은 공백으로 구분 되나요? 그렇다면, 당신은에 의해 분할 수있다 "\] \ ["다음 괄호에 걸쳐 모두 왼쪽을 대체 :

String vals = "[Peter Jackson] [UK] [United Kingdom] [London]"; 
    String[] list = vals.split("\\] \\["); 
    for(String str : list){ 
     str = str.replaceAll("\\[", "").replaceAll("\\]", ""); 
     System.out.println(str); 
    } 

을 아니면 루프를 방지하려는 경우 당신은 그 시작과 끝 브래킷을 제거하기 위해 문자열을 사용할 수 있습니다 "\\] \\ [":

String vals = " [Peter Jackson] [UK] [United Kingdom] [London] "; 
    vals = vals.trim(); //removes beginning whitspace 
    vals = vals.substring(1,vals.length()-1); // removes beginning and ending bracket 
    String[] list = vals.split("\\] \\[");