0

特定の方法でテキスト ファイルの構造を読み取ろうとしています。テキスト ファイルは、一種のユーザー フレンドリーな構成ファイルです。

ファイルの現在の構造 (必要に応じて構造を変更できます):

info1=exampleinfo
info2=exampleinfo2
info3="example","example2","example3"
info4="example","example2","example3"

最初の 2 行を取得するのはそれほど難しいことではありませんが、後の 2 行はより困難です。使用できる 2 つの別個の文字列配列に両方を配置する必要があります。分割文字列を使用することもできますが、info4 配列では、値にコンマが含まれる可能性があるという問題があります (これはすべてユーザー入力です)。

これを解決するにはどうすればよいですか?

4

2 に答える 2

1

パーサーの作成に問題があるのは、ファイル形式の適切な定義から始めていないためです。コンマがある場合にどのように解析すべきかを尋ねる代わりに、コンマで値を適切にエンコードする方法を決定する必要があります。次に、解析は簡単です。

このファイルが複雑な形式 (json など) で信頼できない技術者以外のユーザーによって記述されている場合は、次のような形式を検討してください。

info1=exampleinfo
info2=exampleinfo2
info3=example
    example2
    example3
info4=example
    example2
    example3

つまり、引用符やコンマをいじらないでください。ユーザーは改行とスペースをかなりよく理解しています。

于 2013-04-01T16:40:38.603 に答える
0

私は@DavidHeffernanのソリューションに100%賛成です。JSONは素晴らしいでしょう。そして、出力を構築するプログラムの@ScottMermelsteinのソリューション-可能であれば、それがおそらく最善の策であり、ユーザーが望んでも間違いを犯すことはできません。

ただし、テキストファイルを作成するためにそれらが必要であり、有効な JSON をまとめることを信頼できないユーザーと作業している場合は、選択が難しい形式であるため、ユーザーが使用しない区切り文字を試してください。 、値を区切ります。

たとえば、実際には誰もパイプを使用していないため、パイプは常に優れています。

info1=exampleinfo
info2=exampleinfo2
info3=example|example2|example3
info4=example|exam,ple2|example3

必要なのは、データにパイプを含めることができないというルールだけです。おそらく、ユーザーはそれで大丈夫でしょう。

于 2013-04-01T15:33:37.397 に答える