2

我有这个字符串

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.
4

2 回答 2

2

http://opencsv.sourceforge.net/

但是如果你真的需要重新发明轮子(家庭作业),你需要使用比“what,ever”.split(",") 更复杂的正则表达式。但这并不简单。你可能会更好地创建自己的自定义 Lexer。http://en.wikipedia.org/wiki/Lexical_analysis

在您的情况下,这并不太难。当您逐个字符处理文本时,您只需要跟踪开始和结束引号,以决定何时忽略逗号以及何时对它们采取行动。

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

于 2012-05-23T22:41:57.203 回答
1

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

于 2012-05-23T22:42:36.137 回答