0

卸売業者からの非常に長い価格ファイルがあり、各列がx個の空白で区切られているため、プログラムに読み込むのが難しい場合があります。このような;

99995116273       34 mm asasa                                         00472,50100                                                                                               
99998375442       11 lalaaasdsddfgdfgdf                                00503,00206                                                                                             
99998375443       1 1/4 Microkupling                             00867,00206 

JavaでScannerクラスを使用して、各列を部品番号、説明、価格に分割するにはどうすればよいですか?

4

5 に答える 5

1

分割方法を使用します。このメソッドは正規表現をパラメーターとして受け取るので、次のようなものが機能するはずです。

String line =....;
String[] colums = line.split("\\s{2,}");

これにより、2つ以上のスペースが見つかるたびに新しい文字列が作成されます(スペースは破棄されます)。結果は、必要な単語を含む配列になります。

{2,}、文字列を分割するには、2つ以上のスペースが必要であることを意味します。

于 2011-09-12T14:46:37.313 に答える
0

おはようございます。私はJava開発者ではありませんが、値の区切り文字をスペースとして考えるのではなく、「タブ」として考えてみましたか?私は過去にタブが非難されたファイルを扱ったことがありますが、これはここに当てはまる可能性があります。

于 2011-09-12T14:47:18.493 に答える
0

1行に1つのアイテムがあるとすると、次を使用できます。

Scanner s = new Scanner(input).useDelimiter("\\n");

したがって、s.nextはアイテムを含む文字列を取得し、各行を個別にスキャンするか、単に分割します。

于 2011-09-12T14:47:45.043 に答える
0

貼り付けたテキストを見ると、元のテキストはtab文字を使用して列を揃えているようです。処理しているテキストにタブがあり、フィールド(アイテム)自体にスペースが含まれていない場合は、もう1tab文字を区切り文字として使用できます。

タブ文字がすでにスペースに変換されており、その結果が上記の出力である場合、これははるかに困難な問題になり、ヒューリスティックにしか解決できません。

もう一度テキストを見ると、fornatは

  • 行は、数字のシーケンスである部分番号で始まり、その後に空白(フィールドの一部ではない)が続きます
  • 行は価格で終わります。これは空白(フィールドの一部ではありません)の後に始まり、数字のシーケンスの後に1つ以上(コマンドの後に数字のシーケンスが続く)です。
  • 両側の聖霊降臨祭のスペースをトリミングした後、その間のすべてが説明です

これがフォーマットであることを確認できれば、ソリューションの実装はそれほど複雑ではありません。

于 2011-09-12T14:55:11.583 に答える
0

文字列を分割する代わりに、文字列の最初から部品番号を読み取ってみませんか。最後からの価格と中央に残っているのは説明です。

于 2011-09-12T14:55:25.793 に答える