Java拆分字符串

时间:2012-05-23 22:34:20

标签: java regex

我有这个字符串

G234101,Non-Essential,ATPases,Respiration chain complexes,"Auxotrophies, carbon and",PS00017,2,IONIC HOMEOSTASIS,mitochondria.

我一直试图在java中拆分。该文件以逗号分隔,但其中一些字符串中包含逗号,我不希望它们被拆分。目前在上面的例子中

"Auxotrophies, carbon and"

被分成两个字符串。

有关如何通过逗号进行最佳分割的任何建议。并非所有字符串都包含“”,例如以下字符串:

G234103,Essential,Protein Kinases,?,Cell cycle defects,PS00479,2,CELLULAR COMMUNICATION/SIGNAL TRANSDUCTION,cytoplasm.

2 个答案:

答案 0 :(得分:2)

http://opencsv.sourceforge.net/

但如果你真的需要重新发明轮子(家庭作业),你需要使用更复杂的正则表达式而不仅仅是“什么,永远”.split(“,”)。 It's not simple though.你可能最好创建自己的自定义Lexer。 http://en.wikipedia.org/wiki/Lexical_analysis

在你的情况下这不是太难。当您逐字处理文本时,您只需要跟踪开始和结束引号,以决定何时忽略逗号以及何时对其进行操作。

另请参阅StreamTokenizer了解内置的可配置Lexer - 您应该可以使用它来满足您的要求。

答案 1 :(得分:1)

我认为这将是一个多步骤的过程。首先,从原始字符串中找到引号中的所有逗号,将其替换为{comma}之类的内容。你可以用一些正则表达式做到这一点。然后在新字符串上,使用逗号符号(,)拆分新字符串。然后浏览您的列表,并用逗号符号{,}替换{逗号}。