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

一旦通过行分开文本,我就必须按字母对其进行排序,但是将其编号为具有相同文本格式的文件。

您可以将扫描仪与n用作定界符,逐行读取。

尝试以下:

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

请注意,"n"不是一个特殊的正则角色,因此不需要逃脱。REGEX "\n"(在Java中)是字面的"n"

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

我不完全理解您要做什么,但是如果您的输入文本始终以格式: 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')

这是有点骇人听闻的排序,但是除非您有一个大数据集,否则它可以完成工作,并且可以正常工作。Java代码的大大要大。

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

您不需要带有额外的后拔\n逃脱n,因为n是有效的逃生序列。

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

相关内容

最新更新