【发布时间】:2009-10-14 08:10:06
【问题描述】:
如何对下面的字符串使用java stringtokenizer
|feild1|field2||field4|...
我也希望 java 将空白作为一个字段,但 stringtokenizer 正在跳过它。
有什么选择吗?
【问题讨论】:
-
我会使用管道符号 |
标签: java
如何对下面的字符串使用java stringtokenizer
|feild1|field2||field4|...
我也希望 java 将空白作为一个字段,但 stringtokenizer 正在跳过它。
有什么选择吗?
【问题讨论】:
标签: java
java.util.Scanner 呢?比 Java 5 中引入的 StringTokenizer 强大得多,而且大多不为人知或被低估:
Scanner scanner = new Scanner("1|2|3|||6|");
scanner.useDelimiter("\\|");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
编辑: 它甚至可以直接解析整数(和其他类型),如下所示:
Scanner scanner = new Scanner("1|2|3|||6|");
scanner.useDelimiter("\\|");
while (scanner.hasNextInt()) {
int x = scanner.nextInt();
System.out.println(x);
}
【讨论】:
你真的需要分词器吗? 为什么不将字符串拆分为数组?这样您也将拥有空白字段。
String fields = "bla1|bla2||bla3|bla4|||bla5";
String[] field = fields.split("\\|"); // escape the | because split() needs a regexp
【讨论】:
new String[] {"bla5"}
没有使用String.split()的StringTokenizer:
for (String a : "|1|2||3|".split("\\|")) {
System.out.println("t="+a);
}
更新:忘记了转义(像往常一样)。 +1 票。
【讨论】:
|。