Java 不带csv的split()方法

Java 不带csv的split()方法,java,split,Java,Split,我需要将一个文本文件拆分为多个字段。但是,我可以控制值的划分方式,因为每个值中偶尔会有逗号,所以我不能使用CSV。导入文件的最佳方式是什么?TAB是更好的分隔符吗 问题在于利平科特、威廉姆斯和威尔金斯。这都是一个领域 示例数据 教育史季刊,1748-5959,北卡罗来纳州,威利·布莱克威尔,政治经济史,1527-19190018-2702,杜克大学出版社,政治经济史-年度副刊,北卡罗来纳州,失踪,历史教师,0018-27450018-2745,历史教育学会,今日历史,北卡罗来纳州,0018-27

我需要将一个文本文件拆分为多个字段。但是,我可以控制值的划分方式,因为每个值中偶尔会有逗号,所以我不能使用CSV。导入文件的最佳方式是什么?TAB是更好的分隔符吗

问题在于利平科特、威廉姆斯和威尔金斯。这都是一个领域

示例数据 教育史季刊,1748-5959,北卡罗来纳州,威利·布莱克威尔,政治经济史,1527-19190018-2702,杜克大学出版社,政治经济史-年度副刊,北卡罗来纳州,失踪,历史教师,0018-27450018-2745,历史教育学会,今日历史,北卡罗来纳州,0018-2753,今日历史有限公司,北卡罗来纳州家庭保健护士,0884-741X,利平科特,威廉姆斯和威尔金斯,酒店法,北美,0889-5414,LRP出版物,哈德逊评论,北美,0018-702X,哈德逊评论公司,人文主义者-DC,北美,0018-7399,美国人文主义者协会,理想主义研究,北美,0894-5373,F&W媒体


与其硬编码分隔符,为什么不将其作为一个可配置参数,然后如果输入发生变化或类似情况,您可以轻松地进行调整,而无需重写


如果这不是一个选项,
选项卡
|
似乎是合理的选项,而不知道输入是什么

而不是硬编码分隔符,为什么不将其作为一个可配置参数,那么如果输入发生变化或类似情况,您可以轻松地进行调整,而无需重写


如果这不是一个选项,
选项卡
|
似乎是合理的选项,而不知道输入是什么

如果选择任何分隔符,那么您的一个数据值拥有它们的日子就结束了。所以,为什么不采用CSV库,以确保在需要时转义分隔符并轻松地将其读回呢

下面是你将如何使用它

如果需要,您实际上可以使用OpenCSV中的任何自定义分隔符,如选项卡
\t

 CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t');

但是使用CSV也可以使您的数据文件与许多其他工具兼容。因此,这完全取决于您对数据文件的兼容性要求(如果有的话)。

如果您选择任何分隔符,它将打破您的数据值拥有它们的第一天。所以,为什么不采用CSV库,以确保在需要时转义分隔符并轻松地将其读回呢

下面是你将如何使用它

如果需要,您实际上可以使用OpenCSV中的任何自定义分隔符,如选项卡
\t

 CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t');


但是使用CSV也可以使您的数据文件与许多其他工具兼容。因此,这完全取决于您对数据文件的兼容性要求(如果有)。

请发布一个输入文件的示例。您可以更改输入吗?如何?是的,我认为
选项卡
可以,或者管道(
)如果它不在文本中。@eggHunter StackOverflow非常关注编辑您的帖子,使其更好。我试图将您的数据移动到帖子中,但可能没有正确执行。请编辑并修复。请发布一个输入文件的示例。您能更改输入吗?如何?是的,我认为
选项卡
可以,或者管道(
|
)如果它不在文本本身中。@eggHunter StackOverflow非常关注编辑您的文章以使其更好。我试图将您的数据移动到帖子中,但可能没有正确执行。请编辑并修复。如何使用选项卡进行分隔?拆分。\\t)?@egghnter就是这样。它需要在\\t(\\t)周围加引号,但效果很好。如何使用制表符进行分隔?拆分。(\\t)?@eggHunter就是这样。它需要在\\t(\\t)周围加引号,但效果很好。+1总是使用专用的解析器,而不是试图重新发明轮子。@eggHunter抱歉,但是当您不使用我建议的解决方案时,我如何帮助您?您仍在尝试通过字符串API读取和拆分文件。如果你是想回应Tim,你需要评论他的回答。我的错误,我会试一试。+1始终使用专用的解析器,而不是试图重新发明轮子。@eggHunter抱歉,但是当你不使用我建议的解决方案时,我如何帮助你?您仍在尝试通过字符串API读取和拆分文件。如果你的意思是对蒂姆的回应,你需要评论他的回答。我的错误,我会试一试。