Java 选项卡作为分隔符(StringTokenizer),不作为参数
我看过几篇关于这方面的帖子,但都是关于split而不是Java 选项卡作为分隔符(StringTokenizer),不作为参数,java,delimiter,stringtokenizer,Java,Delimiter,Stringtokenizer,我看过几篇关于这方面的帖子,但都是关于split而不是StringTokenizer 这是我的输入文件: 我编写了stringTokenizer来获取一行中的每个值 1.0 3.0 delim1.0 delim3.0 so on 但当我试图将分隔符作为一个参数时,它对我来说并不是很好 while ((sCurrentLine = br.readLine()) != null) { System.out.println(sCurrentLine); StringTokenizer st
StringTokenizer
这是我的输入文件:
我编写了stringTokenizer来获取一行中的每个值
1.0 3.0
delim1.0
delim3.0
so on
但当我试图将分隔符作为一个参数时,它对我来说并不是很好
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
StringTokenizer st = new StringTokenizer(sCurrentLine, args[0]);
while(st.hasMoreTokens()){
System.out.println("delim"+st.nextToken());
}
}
1.将”
(通过按键盘中的“Tab”键作为参数传递,它工作正常
2.将“\t”
作为参数传递。它正在显示
1.0 3.0
delim1.0 3.0
3.将\t
作为参数传递。它显示的是相同的
1.0 3.0
delim1.0 3.0
为什么会这样。“\t”
不能作为字符串传递。尝试将其作为\\\t
传递,它应该可以工作,因为\t
是一个转义序列,应该存储在原语中的char或作为包装类的Character中。请评论您期望的是什么?即使您将一个标签而不是一个空格传递给标记器,标记器也会将该行拆分?如果文件中的数字用空格分隔,那么您必须使用空格作为分隔符。您可以将文本文件复制/粘贴到pastebin.com并在此处发布链接吗?嗯,我自己对此进行了测试,似乎java完全接受了命令行中的所有内容。因此,如果不放入物理字符,就无法对制表符进行分隔。另一方面,您必须识别/转换程序中的制表符。这是一段hadoop代码。使用split时存在性能问题