2

Javaで行を分割するコードを書いていますが、正しく機能しません。

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.lang.*;

public class mainprogram {
    public static void main(String [] args ) throws FileNotFoundException, IOException
    {
    //creating object for purpose of writing into file
    writFile ObjectwritFile = new writFile();

    //creating object for purpose of reading from file
    loadFile ObjectloadFile = new loadFile();

    //this will be used for storing text into from file
    String text="";

    //text = ObjectloadFile.loadFile("C://names.txt");

    System.out.println(text);

    ObjectwritFile.writeFile("C://testfile.txt",text);

   //these regexp didn't work
    //String regexp = "[\\r\\n]+"; 
   //String regexp = "[\\s,;\\n\\t]+";  

  String regexp = "[\\n]+";

   //this one didn't work  
   //String[] lines = text.split(regexp);



    String[] lines = text.split(System.getProperty("line.separator"));

    for(int i=0; i<lines.length; i++){

    System.out.println("Line "+i+": "+lines[i]);
    ObjectwritFile.writeFile("C://testfilelines.txt","Line "+i+": "+lines[i]);

    }         
          }

    }

テキストはこの形式です。

John, Smith, 4 ,5 ,6
Adams, Olsen, 7,8, 3
Steve, Tomphson , 4,5 9
Jake, Oliver, 9,8,9

テキストを行で区切ると、アルファベットと数字で同じテキスト形式のファイルに並べ替える必要があります。

4

5 に答える 5

3

区切り文字としてScannerを使用して、行ごとに読み取ることができます。\n

于 2012-12-22T18:55:16.500 に答える
2

これを試して:

String[] lines = text.split("\n+");

これ"\n"は特別な正規表現文字ではないため、エスケープする必要はありません。正規表現"\\n"(Javaの場合)はリテラルです"n"

于 2012-12-22T19:05:38.740 に答える
1

なぜわざわざすべてを手作業で行うのですか?スーパーCSVなどの利用可能なCSVライブラリの1つを使用するだけです。

于 2012-12-22T18:55:08.637 に答える
1

あなたが何をしようとしているのか完全には理解していませんが、入力テキストが一貫して次の形式であるString,String,int,int,int場合、このGroovyコードは行を読み取り、最後の3つの数字で昇順で並べ替えて印刷します:

def lines = new File('textSort.txt').readLines()
lines.sort{ it.split(',')[4].trim() }
lines.sort{ it.split(',')[3].trim() }
lines.sort{ it.split(',')[2].trim() }
println lines.join('\n')

3回の並べ替えは少し厄介ですが、大規模なデータセットがない限り、作業は完了し、正常に機能します。そのためのJavaコードは、それに応じてはるかに大きくなります。

于 2012-12-22T19:06:30.410 に答える
0
String regexp = "[\\n]+";

   //this one didn't work  
   //String[] lines = text.split(regexp);

有効なエスケープシーケンスのよう\nに、余分なバックスラッシュを使用してエスケープする必要はありません。\\n\n

String regexp ="[\n]+"; //will work fine
于 2012-12-22T18:52:23.360 に答える