2

私はこの文字列を持っています

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

私がJavaで分割しようとしていること。ファイルはコンマで削除されていますが、一部の文字列にはコンマが含まれているため、分割されたくありません。現在、上記の例では

"Auxotrophies, carbon and"

2つの文字列に分割されています。

これをコンマで分割するのに最適な方法に関する提案。すべての文字列に「」が含まれているわけではありません。たとえば、次の文字列です。

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( "、")よりも複雑な正規表現を使用する必要があります。しかし、それは単純ではありません。また、独自のカスタムレクサーを作成した方がよい場合もあります。http://en.wikipedia.org/wiki/Lexical_analysis

あなたの場合、これはそれほど難しいことではありません。テキストを1文字ずつ処理するときは、開始引用符と終了引用符を追跡して、コンマを無視するタイミングと操作するタイミングを決定する必要があります。

組み込みの構成可能なレクサーについては、 StreamTokenizerも参照してください。これを使用して要件を満たすことができるはずです。

于 2012-05-23T22:41:57.203 に答える
1

これは多段階のプロセスになると思います。まず、元の文字列から引用符で囲まれたすべてのカンマを見つけて、{comma}のようなものに置き換えます。これは、いくつかの正規表現を使用して行うことができます。次に、新しい文字列で、新しい文字列をコンマ記号(、)で分割します。次に、リストを調べて、{comma}をコンマ記号{、}に置き換えます。

于 2012-05-23T22:42:36.137 に答える