繁体   English   中英

StringTokenizer 上的意外行为

[英]Unexpected Behaviour on StringTokenizer

我有这个输入字符串:

21. Sponge Cake by Charlie Montoya [2014-10-13]

我正在尝试解析字符串以从中提取信息,即:

id = "21"; title = "海绵蛋糕"; author = "查理蒙托亚"; 日期 = "2014-10-13";

我正在使用 StringTokenizer:

    StringTokenizer tokenizer = new StringTokenizer(line, " ");
    System.out.println("id? : "+ tokenizer.nextToken(".").trim());
    System.out.println("title? : "+ tokenizer.nextToken("by").trim());
    System.out.println("author? : "+tokenizer.nextToken().trim());
    System.out.println("date? : "+tokenizer.nextToken("[").trim());

我的输出是:

    id? : 21
    title? : . Sponge Cake
    author? : Charlie Monto
    date? : ya

这里有很多错误:标题前面有“。” 这应该是 id 之后的分隔符。 作者姓名的最后 2 个字符出现在日期字段中 缺少实际日期。

我该如何纠正这些问题?

中间标记(您指定的分隔符)不会被标记器消耗。 这应该解决它:

System.out.println("id? : " + tokenizer.nextToken(".").trim());
tokenizer.nextToken(" ");
System.out.println("title? : " + tokenizer.nextToken("by").trim());
tokenizer.nextToken(" ");
System.out.println("author? : " + tokenizer.nextToken("[").trim());
System.out.println("date? : " + tokenizer.nextToken("[]").trim());

我还建议使用 Scanner 类,就像 Sweeper 已经做过的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM