[英]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.