당신이 상상분할() 아무것도 = 빈 문자열
split[0] = "A";
split[1] = "B";
split[2] = "";
split[3] = "D";
그러나 결과는 다음과 같습니다
split[0] = "A";
split[1] = "B";
split[2] = "D";
인가 거기에 간단하게 올바른 방법이 있습니까?
당신이 상상분할() 아무것도 = 빈 문자열
split[0] = "A";
split[1] = "B";
split[2] = "";
split[3] = "D";
그러나 결과는 다음과 같습니다
split[0] = "A";
split[1] = "B";
split[2] = "D";
인가 거기에 간단하게 올바른 방법이 있습니까?
String string = "A;B;;D";
String[] split = string.split(";", -1);
: 오버로드 된 방법 split(String regex, int limit)
를 사용
The string "boo:and:foo", for example, yields the following results with these parameters:
Regex Limit Result
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }
0은 두 번째 매개 변수로도 사용됩니다. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String, int) –
개인적으로 내가 Guava의 Splitter
클래스 사용하십시오 : 당신 이을 원한다면, 그것은 빈 문자열을 생략 할
Iterable<String> bits = Splitter.on(';').split(string);
를 그냥 사용하지 않는 것 :
Iterable<String> bits = Splitter.on(';').omitEmptyStrings().split(string);
어떤 불쾌한 암시 정규 표현식에를 , 그리고 모든 것은 주석에 쓰여있는대로합니다. 훨씬 더 좋네요 :)
실제로 스플리터 정적 최종 변수로 만들 것입니다. (하나의 클래스를 위해 Guava를 가져 오는 것이 잔인하다고 생각한다면 나머지 라이브러리를 살펴보십시오. 매우 유용합니다 - Java 없이는 Java로 개발하고 싶지 않습니다.)
당신은 단지 분할 (SECURITY) 기능을 비활성화에서 두 번째 매개 변수를 포함해야 빈 문자열을 뒤 폐기 0의
String[] split = string.split(";", 0);
사용 제한 : 이온, 문자이되는 최소 금액은 그래서 전화가 같아야합니다 귀하의 경우 0
에, 분할 사이에 받아 들일 겁니다 또는 음수 값을 유지해야합니다. 여기에서 문서를 찾으십시오. Javadoc
' 생각 한계는 _ "나누기 사이에 받아 들일 수있는 가장 작은 양의 문자"_를 나타냅니다. 일치 할 수있는 최대량이 더 많아서 결과 배열의 최대 크기가됩니다. JavaDoc에서 결과 배열'{ "b", ":": and "f", "", "}}는 제한이 5이지만 인덱스 1은 빈 문자열입니다. – wulfgarpro
자바는 사용자가 원하는 것을 수행합니다. 예제를 단순화 할 때 문제를 제거하지 않았습니까? – Affe
http://stackoverflow.com/questions/3764687/string-split-not-returning-empty-results?rq=1 –
예상대로 결과를 얻었습니다. 전체 코드를 게시 할 수 있습니까? 어쩌면 문제가 다른 곳에 있을지도 모릅니다. –