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

您可以使用扫描\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 库之一,例如Super CSV

于 2012-12-22T18:55:08.637 回答
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')

排序 3 次有点 hacky,但它可以完成工作并且可以正常工作,除非你有一个大的数据集。它的 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 回答