Java按行分割文本(其他解决方案不起作用)
我正在用java编写代码来拆分行,但它不能正常工作Java按行分割文本(其他解决方案不起作用),java,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, IOExcep
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]);
}
}
}
一旦我将文本按行分开,我就必须按字母表和数字将其排序,并将其放入具有相同文本格式的文件中
String regexp = "[\\n]+";
//this one didn't work
//String[] lines = text.split(regexp);
由于\n
是有效的转义序列,因此不需要使用额外的反斜杠\\n
转义\n
String regexp ="[\n]+"; //will work fine
为什么要费心用手做每件事?只需使用一个可用的CSV库,例如。您可以使用
\n
作为分隔符,逐行读取。尝试以下操作:
String[] lines = text.split("\n+");
请注意,
“\n”
不是特殊的正则表达式字符,因此不需要转义。regex“\\n”
(java)是文本“n”
我不完全理解您要做什么,但是如果您的输入文本格式一致:字符串、字符串、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代码会相应地大得多。“按字母表和数字”你说不能正常工作是什么意思?错误?为什么使用regexp按行分割?只要遵循奇点建议…我必须按字母顺序从a到z排序。我必须按照从小到大的数字对这些数据进行排序。这是我在控制台的第0行中得到的:不,这也不起作用。每次运行程序时,我都会得到这个解决方案。基本上,程序将第0行输出到文本文件中,而不输出其他内容。我想我尝试过这个解决方案,但我不想编写我尝试过的每个regexp。下一步?@那么我想你读取文本文件的方式有问题。但是,您不需要使用额外的反斜杠来转义
\n
,因为\n
是一个有效的java转义序列。下面是我用于加载文件的类。当我将加载的文本保存到文件中时,它保存得很好。所以加载过程是正确的。哦,对不起,我没有完全理解你。所以我需要更多的代码来让它工作。好的,谢谢。在某些方面,groovy可以被认为是java伪代码。如果您可以在groovy中表达您想要的内容,那么它可以很容易地扩展到java中。用groovy更容易表达自己,因为它更强大,需要的仪式更少。因此,如果这是您想要的,或者接近它,那么您就接近于java解决方案了。好吧,谢谢我有一些人与我一起研究这个问题,当我们找到解决方案时,我将把它发布在这里,并选择最佳答案。
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')