2016-07-07 3 views
0

공백이 포함 된 입력 문자열을 분할하려고하지만 내 분할에서 잘라내고 싶지 않습니다. 분할 된 배열에 포함하고 싶습니다. 이 경우 사용하는 더 나은 정규식이나 메서드가 있습니까?공백으로 표시된 null 값을 포함하도록 문자열 분할

String data = "1  a1 b1 r5"; 
String splitData = data.split("\\s+"); 
for(String x : splitData){ 
    System.out.print(x + ", "); 
} 

Expected output: 1, , , , , ,a1, b1, , r5 
+0

왜 문자로 변환하고 문자를 반복하지 않습니까? – logger

+0

"\\ s +"는 공백의 수 (1 개 이상)를 단일 구분 기호로 간주합니다 – FredK

답변

0

여기 방법론에 혼란 스럽습니다. 이것은 당신이하려는 모든 경우, 그것은 훨씬 더 간단하게 수행 할 수 있습니다

String input = "1  a1 b1 r5"; 
String output = input.replace(" ", ", "); 
System.out.println(output); 

중간 선은 단순히 ","공백 다음에 쉼표, "공백 문자"를 대체합니다. 이 최소한의 예이며, 실제로 그 정규식을 게시하시기 바랍니다 더 복잡한 정규식을 사용하려는 우리가 작업 할 수 있다면

1, , , , , a1, b1, , r5 

: 최종 출력이 요청한 출력과 일치합니다. 당신이 토큰의 배열을 만들려면

0

바로 사용

문자열 [] SP = s.split를 ("");

그러나,이되지 5.

, 당신이 기대하는 "A1"과 "B1"0 빈 항목이 사이 한 공간이있다, 첫 번째 후 4 개 빈 항목을 만들 것입니다. "b1"과 "r5"사이에 공백이 2 개 있으며 빈 항목이 하나있을 것으로 예상됩니다. "1"과 "a1"사이에 5 개의 빈 공간이 있습니다. 왜 4 대신에 5 개의 빈 아이템을 기대하십니까?

그리고 왜 "a1"앞에 쉼표 뒤에 공백이 없을까요?