当项目本身与空格分开时,如何分隔包含空格的文件中的项目?

时间:2011-09-12 14:42:00

标签: java java.util.scanner removing-whitespace

我的批发商有一个非常长的价格文件,我有很多难以读入我的程序,因为每列都用x个空格分隔。像这样;

99995116273       34 mm asasa                                         00472,50100                                                                                               
99998375442       11 lalaaasdsddfgdfgdf                                00503,00206                                                                                             
99998375443       1 1/4 Microkupling                             00867,00206 

如何使用Java中的Scanner类将每列分为部分号,描述和价格?

5 个答案:

答案 0 :(得分:1)

使用split方法。此方法将正则表达式作为参数,因此这样的事情对您有用:

String line =....;
String[] colums = line.split("\\s{2,}");

每次找到两个或多个空格(空格将被丢弃)时,这将创建一个新字符串。结果将是一个包含您需要的单词的数组。

{2,}意味着对于要断开的字符串,它需要有两个或更多空格。

答案 1 :(得分:0)

早上好,我不是一个java开发人员,但我没有考虑将值定界符作为空格,你是否尝试将其视为“标签”?我以前处理过tab demlimeted文件,这可能就是这种情况。

答案 2 :(得分:0)

假设每行有1个项目,您可以使用以下内容:

Scanner s = new Scanner(input).useDelimiter("\\n");

因此,s.next将检索包含项目的字符串,然后单独扫描每一行或简单地拆分它。

答案 3 :(得分:0)

查看粘贴的文本,原始文本似乎使用tab字符来对齐列。如果您正在处理的文本具有选项卡且字段(项)本身不包含空格,那么您可以使用另外一个tab字符作为分隔符。

如果制表符已经转换为空格并且结果是上面的输出,那么这就变成了一个更加困难的问题,只能通过启发式方法解决。

再看文本,fornat似乎是

  • 行以part-number开头,这是一个数字序列,后跟空格(不是字段的一部分)
  • 行以价格结束,该价格在空白之后开始(不是字段的一部分),是一个数字序列,后跟一个或多个(命令后跟数字序列)
  • 两者之间的所有内容都是描述,在修剪两侧的空白后

如果您可以确认这是格式,那么解决方案实施起来并不复杂。

答案 4 :(得分:0)

为什么不从字符串的开头读取部件号,而不是拆分字符串,从结尾开始的价格和中间剩下的是描述。