2011-05-10 4 views
2

일부 사용자 입력을 분할하려고합니다. 입력은 a1 b2 c3 d4 형식입니다. 각 입력 (예 : a1)에 대해 'a'와 '1'로 나누는 방법은 무엇입니까?공간이없는 Java 문자열 분할

저는 문자열 분할 기능에 익숙하지만 구분 기호로 무엇을 지정할 수 있습니까?

감사합니다. 문자열의 배열로 공간

답변

1

문자열을 일반적으로 분할하려는 경우 (다른 답변 당 문자 수를 계산하지 않고) String.split()을 계속 사용할 수 있지만 regular expressions을 사용해야합니다. (참고 : 등 A1, A2, aaa333 같은 문자열이있을 때이 답변이 작동합니다)이 시점에서

String ALPHA = "\p{Alpha}"; 
String NUMERIC = "\d"; 

String test1 = "a1"; 
String test2 = "aa22"; 

ArrayList<String> alpha = new ArrayList(); 
ArrayList<String> numeric = new ArrayList(); 

alpha.add(test1.split(ALPHA)); 
numeric.add(test1.split(NUMERIC)); 
alpha.add(test2.split(ALPHA)); 
numeric.add(test2.split(NUMERIC)); 

을, 알파 배열은 문자열의 알파 부분이되고 숫자 배열이있을 것이다 숫자 부분. (참고 : 실제로 작동하는지 테스트하기 위해 컴파일하지 않았지만 기본 아이디어를 제공해야합니다.)

+0

+1 정규식 제안. –

+0

"\ p {Alpha}"는 "잘못된 이스케이프 시퀀스"라는 오류 메시지를 표시합니다. – Triple777er

+0

@ Triple777er - "\ p {Alpha}"대신 "[a-zA-Z]"를 사용해보십시오. – JasCav

0

분할 후, 난 그냥 열로의 문자 반복 추천 할 것입니다 String.charAt(0)String.charAt(1)

0

으로 개별 문자를 당깁니다.

for(int i = 0; i < str.length(); i += 3) { 
    char theLetter = str.charAt(i); 
    char theNumber = str.charAt(i + 1); 
    // Do something 
} 

편집 :

([a-z]+)(\d+) 

정보 : http://www.regular-expressions.info/java.html

+0

k11 l12 m13 등의 경우에는 작동하지 않습니다 ... – Kal

+1

1로 생각했습니다. 문자/한 자리 조합. 그래도 될 수 있습니다. – Ryan

+0

감사합니다. 1 자릿수의 1 자리 숫자 조합 일뿐입니다. – Triple777er

1

당신은 String#substring()

String a1 = "a1" 
String firstLetterStr = a1.substring(0,1); 
String secondLetterStr = a1.substirng(1,a1.length()); 

마찬가지로 사용할 수는 한 문자 또는 숫자보다 더 될 수 있다면, 정규 표현식을 사용 ,

012 당신이 split(" ")을 사용하여 개별 토큰으로 사용자 입력을 분할 한 후 3,516,
String c31 = "c31" 
String firstLetterStr = c31.substring(0,1); 
String secondLetterStr = c31.substirng(1,c31.length()); 
+0

'aa31'또는 그와 비슷한 것을 선택하면 작동하지 않습니다. 가능하다면 모르겠지만, 나는 지적 할 것입니다. – JasCav

+0

@JasCav : 물론 그렇지 않습니다. 그러나 OP가 와서 이런 말을하게하십시오. 나는 이미 OP에서가 아니라 비슷한 코멘트를 기반으로 원래의 질문을 편집하는 실수를 저질 렀습니다. –

+0

@Adeel - 좋은 지적입니다. 때로는 개발자의 요구에 따라 간단한 대답을하는 것이 더 나을 때가 있습니다. 나는 때때로 솔루션을 과장하지 않도록주의해야합니다. – JasCav

1

을 사용할 수 있으며, 사용 문자로 각 토큰을 분할 할 수 있습니다 (구분 기호로 빈 문자열을 사용) split("").

2

나중에 데이터를 사용하는 방법은 실제로 달라 지지만 split("") 또는 액세스 중 개별 문자로 나눌 수있는 다른 방법은 toCharArray()입니다. 문자 배열로 문자열을 분할하는 것입니다 ...