2010-11-18 5 views
2

I 다음 문자열이 있습니다자바 : 문자열 분할

내가 세 부분으로 분할 할
 Mr John Smith Dickson <[email protected]> 

:

1 부 - 씨
2 부 - 존 스미스 딕슨
3 부분 - [email protected]

나는 이것을 달성하는 방법에 대해 혼란 스럽습니다. 아무도 도와 줄 수 있습니까?

위의 이름은 샘플 일 뿐이며 이름은 다를 수 있습니다. John, John Smith, John Smith Dickson

+0

첫 번째 문자열 – Emil

+0

에는 이메일이없는

Regex in action.

^([A-Z][a-z]{1,2})\s+([^<]*)<(.*?)>$ 
유 단순히이 이름 또는 이러한 형식의 일반적으로 어떤 이름으로 분할 싶어. – Emil

답변

3

정규식을 사용해야합니다. 첫 단어를 공백까지 캡처 한 다음 공백으로 구분 한 다음 세 단어를 꺾쇠 괄호 안에 넣을 수 있습니다.

이 단어의 문자를 의미 승 \

(\w+)\s+(\w+\s+\w+\s+\w+)\s*<(.*)> 

작동합니다. +는 1 이상을 의미합니다. \ s는 공백 문자를 의미합니다.() 안의 것들이 캡처됩니다. 당신은 자바 코드에서 사용하는 것과 정규식은 분할이 할 수

http://www.regexplanet.com/simple/index.html 

참고 여기에 테스트

(\\w+)\\s+(\\w+\\s+\\w+\\s+\\w+)\\s*<(.*)> 

이지만, 언제 당신은 분할 후, 다음 다음 토큰, 분할 토큰을 얻고있다 더 많은 토큰을 얻은 다음 다시 나눠서, 당신은 너무 복잡한 일을하고 있습니다. 정규 표현식은 크게 단순화합니다.

+0

난 잘 구절이 아니라면, 정규식에, 내게 u는 이것에 대한 샘플 정규식을 줄 수 없다면, 감사합니다 – Apache

+0

@apache 내가 regext를 추가했습니다. – hvgotcodes

1

당신은 yourstring을 사용하고 싶을 것입니다. .split (""); 이렇게하면 문자열을 공백에 따라 각 단어로 분할합니다. 각 사람이 세 가지 이름을 가지고 알고 있다면, 당신은 다음 말할 수 :

String myString = "Mr John Smith Dickson [email protected]";  
String[] splitResult = myString.split(" "); 
String title = splitResult[0]; \\ Mr 
String name = splitResult[1]+" "+splitResult[2]+" "+splitResult[3]; \\ John Smith Dickson 
String email = splitResult[4]; 

당신은 사람이 얼마나 많은 이름을 모르는 경우

, 그것은 좀 더 복잡해진다.

1
String mister = "Mr John Smith Dickson - [email protected]"; 
String[] misters = mister.split(" "); 

첫 번째 부분 : 두 번째

String first = misters[0]; 

: 제

String second = misters[1] + " " + misters[2] + " " + misters[3]; 

:

String third = misters[5]; 
0

Java는 사항 String.split (문자열 정규식)가 당신이 사용할 수있는 방법 이렇게 :

String s = "Mr John Smith Dickson"; String [] parts = s.split ("");

이렇게하면 공백으로 구분 된 부분의 문자열 배열을 얻을 수 있습니다.그럼 너는 뭔가를 할 수있어.

스팅 제목 = 부분 [0]; 문자열 이름 = 부분 [1] + ""+ 부분 [2] + ""+ 부분 [3];

0

일부 Regex를 사용하십시오.

씨 :

"([A-Za-z]{2,3}) " 

존 스미스 딕슨

"[A-zA-z] (.*)<" 

이메일

".*<(.*)>" 
0

당신은 항상 당신이 할 수있는 문자열의 시작 부분에 씨, 부인, 박사 등의 약어가있는 경우 정규식을 사용하십시오.

1
String s = "Mr John Smith Dickson<[email protected]>"; 
Pattern pattern = Pattern.compile("(\\w+)\\b(.+)<(.+)>"); 
Matcher matcher = pattern.matcher(s); 

if (matcher.matches()) { 
String title = matcher.group(1); 
String name = matcher.group(2); 
String email = matcher.group(3); 
}