Java按行分割文本(其他解决方案不起作用)

时间:2012-12-22 18:49:26

标签: java

我正在编写代码来分割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

一旦我按行分隔文本,我必须按字母顺序对其进行排序,然后将数字排序为具有相同文本格式的文件。

5 个答案:

答案 0 :(得分:3)

您可以将Scanner\n一起用作分隔符,逐行阅读。

答案 1 :(得分:2)

试试这个:

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

请注意,"\n"不是特殊的正则表达式字符,因此它不需要转义。正则表达式"\\n"(在java中)是文字"n"

答案 2 :(得分:1)

为什么要手工做所有事情?只需使用其中一个可用的CSV库,例如Super CSV

答案 3 :(得分:1)

我并不完全明白你要做的是什么,但是如果你的输入文字一直是格式:String,String,int,int,int,那么这个groovy代码会读取这些行,按最后三个数字排序按升序排列并打印出来:

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')

这有点hacky排序三次,但它完成了工作,除非你有一个大的数据集,否则它会正常工作。它的Java代码相应地要大得多。

答案 4 :(得分:0)

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

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

您不需要使用额外的反斜杠\n来转义\\n,因为\n是有效的转义序列。

String regexp ="[\n]+"; //will work fine