2013-01-09 2 views
1

인 문자열에서 ':'&& ""를 자르면 조금 혼란 스럽습니다. 나는 토크 나이를 사용, 그러나토크 나이 저는

Bob:23456:12345 Carl:09876:54321 

,하지만 난 때 : 나는 토크 나이에이 문자열을 조작 할

 String signature1 = tok.nextToken(":");    
     tok.nextToken(" ") 

내가 얻을 :

12345 Carl

그러나 var에 첫 번째 int와 두 번째 int가 있어야합니다.

아이디어가 있으십니까?

답변

2

두 가지 패턴이 있습니다. 두 패턴을 모두 처리해야합니다.

주먹으로 공백으로 구분 된 값을 나누어야합니다. 문자열 split(" ") 만 사용하십시오. 그러면 String[]이 반환됩니다.

각 다음에 대해 String 토크 나이저를 사용하십시오.

나는 믿는다.

코드 :

String input = "Bob:23456:12345 Carl:09876:54321"; 
String[] words = input.split(" ") 

for (String word : words) { 
    String[] token = each.split(":"); 

    String name = token[0]; 
    int value0 = Integer.parseInt(token[1]); 
    int value1 = Integer.parseInt(token[2]);  
} 
0

다음 코드가 수행해야합니다

String input = "Bob:23456:12345 Carl:09876:54321"; 
StringTokenizer st = new StringTokenizer(input, ": "); 

while(st.hasMoreTokens()) 
{ 
    String name = st.nextToken(); 
    String val1 = st.nextToken(); 
    String val2 = st.nextToken(); 
} 
0

여러 패턴을 가지고, 당신은 단지 하나의 토크 나이로 처리 할 수 ​​없습니다 본다.

whitespace을 기반으로 먼저 분할 한 다음 colon을 기반으로 분할해야합니다.

String[] s = "Bob:23456:12345 Carl:09876:54321".split(" "); 

System.out.println(Arrays.toString(s)); 

String[] so = s[0].split(":", 2); 

System.out.println(Arrays.toString(so)); 

그리고 당신이 얻을 것이다 :이 같은

뭔가 도움이

[Bob:23456:12345, Carl:09876:54321] 
[Bob, 23456:12345] 
0

당신은 당신이 두 번

String str = "Bob:23456:12345 Carl:09876:54321"; 
StringTokenizer spaceTokenizer = new StringTokenizer(str, " "); 
while (spaceTokenizer.hasMoreTokens()) { 
    StringTokenizer colonTokenizer = new StringTokenizer(spaceTokenizer.nextToken(), ":"); 
    colonTokenizer.nextToken();//to igore Bob and Carl 
    while (colonTokenizer.hasMoreTokens()) { 
     System.out.println(colonTokenizer.nextToken()); 
    } 
} 
를 사용할 필요 팅크 tokeniser를 사용해야하는 경우

출력

23456 
12345 
09876 
54321 

여기서는 tokenizer를 사용하지 않았지만 문자열을 분할하는 클라우디오의 대답을 사용합니다.