当前位置: 首页 > 知识库问答 >
问题:

StringTokenizer上的意外行为

黎腾
2023-03-14

我有以下输入字符串:

21. Sponge Cake by Charlie Montoya [2014-10-13]
    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后面的分隔符。作者姓名的最后两个字符出现在日期字段中,实际日期丢失。

我怎样才能纠正这些问题?

共有1个答案

夏侯英纵
2023-03-14

中间标记(指定的分隔符)不会被标记器使用。这个schould解决了它:

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

我还建议使用扫描器类,就像Sweeper已经做的那样。

 类似资料:
  • 我有以下代码,它将标记字符串以创建对象列表: 我预期的输出是 1#、#Jon#、#176 2#、#Jack#、#200 3#、#Jimmy#、#160 如果我把内部分界线更改为类似的东西,它会正常工作为什么会发生这种行为?

  • 问题内容: 前一阵子,在使用Class.getMethod和自动装箱时,我遇到了类似的问题,因此在自己的查找算法中实现它很有意义。但是,真正让我感到困惑的是,以下两种方法也不起作用: String.class实现了Serializable接口,我确实希望它包含在lookup方法中。 我也必须在自己的查找算法中考虑这一点吗? 编辑 :我确实读过Javadoc, 所以让我强调一下问题的第二部分 :如果

  • 我是Python的新手,我对Python处理空对象的方式有点困惑。 考虑这段代码; 我得到了这段代码的以下输出。 我假设由{}初始化的对象是有效对象。为什么Python不那样对待它?为什么要得到diff If条件的diff输出? 在C++中,当我说 如果obj不是NULL,它将进入IF块(不管它是垃圾值还是其他) 但当我翻译成Python时也是一样的。 为什么?我读到Python将{}计算为fal

  • 请注意,NULL字节始终存在,您可以使用检查它。 我知道我可以使用获得类似的结果。我不是在问其他选择,我只是想了解格式字符(如doc所说的“NUL填充字符串”)背后的逻辑。 “NULL”值在哪里涉及到所有这些?

  • 问题内容: 我有以下代码: 我希望它返回“ 05/20/2012”,但它返回“ 04/20/2012” 这对我来说毫无意义-有人可以帮助我了解发生了什么以及如何获得正确的响应吗? 感谢您的关注! 问题答案: 从零开始。如和 尝试

  • 我使用GNU gcc(4.8.1429)为ARM(ATsam4LC4B:cortexM4 core,256K flash)构建了一个简单的应用程序: 在0x3F000(链接器选项-Ttext=0x3F000)加载并初始化, 在0处复制自身(镜像) 使用assembly跳转到镜像重置处理程序()(接近0) 镜像应用程序开始按预期运行 当达到mirror main()调用的闪存位置(闪存位置0x532