5
我有一個看似簡單的分割一個逗號的問題分開String
爲標記,由此,輸出應包括在箱子空令牌的字符串,其中:Tokenising含有空令牌
- 在
String
的第一個字符是一個逗號。 String
中的最後一個字符是逗號。- 連續出現兩個逗號。
例如,對於String
:",abd,def,,ghi,"
應產生的輸出:{"", "abd", "def", "", "ghi", ""}
。
我嘗試過使用String.split
,Scanner
和StringTokenizer
,但每個都給出了不同的不希望的輸出(下面的例子)。任何人都可以建議一個優雅的解決方案,最好使用JDK類?顯然,我可以自己編寫一些代碼,但我覺得我錯過了上述三種方法之一。請注意,分隔符是固定的String
,但不一定是逗號,也不是單個字符。
示例代碼
import java.util.*;
public class Main12 {
public static void main(String[] args) {
String s = ",abd,def,,ghi,";
String[] tokens = s.split(",");
System.err.println("--- String.split Output ---");
System.err.println(String.format("%s -> %s", s, Arrays.asList(tokens)));
for (int i=0; i<tokens.length; ++i) {
System.err.println(String.format("tokens[%d] = %s", i, tokens[i]));
}
System.err.println("--- Scanner Output ---");
Scanner sc = new Scanner(s);
sc.useDelimiter(",");
while (sc.hasNext()) {
System.err.println(sc.next());
}
System.err.println("--- StringTokenizer Output ---");
StringTokenizer tok = new StringTokenizer(s, ",");
while (tok.hasMoreTokens()) {
System.err.println(tok.nextToken());
}
}
}
輸出
$ java Main12
--- String.split Output ---
,abd,def,,ghi, -> [, abd, def, , ghi]
tokens[0] =
tokens[1] = abd
tokens[2] = def
tokens[3] =
tokens[4] = ghi
--- Scanner Output ---
abd
def
ghi
--- StringTokenizer Output ---
abd
def
ghi