我有这个字符串
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.
答案 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}之类的内容。你可以用一些正则表达式做到这一点。然后在新字符串上,使用逗号符号(,)拆分新字符串。然后浏览您的列表,并用逗号符号{,}替换{逗号}。