我正在编写代码来分割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
一旦我按行分隔文本,我必须按字母顺序对其进行排序,然后将数字排序为具有相同文本格式的文件。
答案 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