【问题标题】:how to use java stringtokenizer?如何使用java stringtokenizer?
【发布时间】:2009-10-14 08:10:06
【问题描述】:

如何对下面的字符串使用java stringtokenizer

|feild1|field2||field4|...

我也希望 java 将空白作为一个字段,但 stringtokenizer 正在跳过它。

有什么选择吗?

【问题讨论】:

  • 我会使用管道符号 |

标签: java


【解决方案1】:

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);
}

【讨论】:

  • 我绝对不知道并且被低估了。谢谢。
  • 2012 年,它仍然不受欢迎!从来不知道它的存在!
【解决方案2】:

你真的需要分词器吗? 为什么不将字符串拆分为数组?这样您也将拥有空白字段。

String fields = "bla1|bla2||bla3|bla4|||bla5";
String[] field = fields.split("\\|"); // escape the | because split() needs a regexp

【讨论】:

  • 请注意,这将忽略尾随的空白字段(即“bla5||”返回new String[] {"bla5"}
  • @Aaron Digulla:这可以修复。使用 .split("\\|", -1) 获取尾随空白字段
【解决方案3】:

没有使用String.split()的StringTokenizer:

for (String a : "|1|2||3|".split("\\|")) {
    System.out.println("t="+a);
}

更新:忘记了转义(像往常一样)。 +1 票。

【讨论】:

  • 您需要转义|
猜你喜欢
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多