Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java按行分割文本(其他解决方案不起作用)_Java - Fatal编程技术网

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

我正在用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]);

    }         
          }

    }
一旦我将文本按行分开,我就必须按字母表和数字将其排序,并将其放入具有相同文本格式的文件中

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