如何使用" \ n"在java中拆分字符串

时间:2014-03-24 06:01:57

标签: java string

我正在使用这样的命令行输入字符串:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     String line = br.readLine();

我想拆分这个字符串:

String line = "int t; //variable t  
t->a = 0; //t->a does something  
return 0;"
像这样:

String[] arr = line.split("\n");  
arr[0] = "int t; //variable t";  
arr[1] = "t->a=0; //t->a does something";  
arr[2] = "return 0";  

但是当我运行我的java程序时,split函数只返回:

  

arr[0] = "int t; //variable t";

它没有返回我上面提到的其他两个字符串,为什么会发生这种情况请解释。

3 个答案:

答案 0 :(得分:5)

方法readLine()将读取输入,直到输入换行符。该新行字符为"\n"。因此,它无法阅读由String分隔的"\n"

一个解决方案:

您可以使用while循环阅读这些行并将其存储在ArrayList中:

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    List<String> lines = new ArrayList<String>();
    String line;

    while ((line = br.readLine()) != null) {
        lines.add(line);
    }

    for (String s : lines) {
        System.out.println(s);
    }

要停止while,您必须按 Ctrl + z (或 Ctrl + d 在UNIX中,如果我没错的话。)

答案 1 :(得分:0)

这应该有用!还要确保输入包含\n

 String[] arr = line.split("\r?\n")

答案 2 :(得分:0)

从您的评论中,您似乎接受了这样的输入

   BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    try {
        String line = br.readLine();
        System.out.println(line);
    } catch (IOException e) {
        e.printStackTrace();
    } 

此处line代表 已分割 字符串\n。当您在控制台上按Enter键时,在一行中输入的文本将被捕获到line。按照我的说法,您只需阅读 一次 ,它只捕获int t;//variable t,其中没有任何内容可以拆分。