如何在JAVA中用新行拆分字符串?

时间:2014-06-26 13:45:41

标签: java split inputstream

我想在Java中用新行拆分字符串。我正在使用以下正则表达式 -

str.split("\\r|\\n|\\r\\n");

但它仍然不是用新行分割字符串。 输入 -

0 
0 
0 
0

Output = String [] array = {“0000”}而不是我想要= String [] array = {“0”,“0”,“0”,“0”}。 我已经阅读了有关堆栈溢出的各种解决方案,但对我来说没有任何作用。

代码是 -

    import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;


public class Input {

    public static void main(String[] args) {

         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String line;
         String text = "";
         try {
            while((line=br.readLine())!=null){
                text = text + line; 
             }
        } catch (IOException e) {
            e.printStackTrace();
        }


         String [] textarray = text.trim().split("[\\r\\n]+");

       for(int j=0;j<textarray.length;j++)
         System.out.println(textarray[j]);
//         System.out.print("");
//         for(int i=((textarray.length)-1);i>=0;i--){
//           long k = Long.valueOf(textarray[i]).longValue();
//           System.out.println(k);
////             double sqrt = Math.sqrt(k);
////             double value = Double.parseDouble(new DecimalFormat("##.####").format(sqrt));
////             System.out.println(value);
////             
////        }

    }

2 个答案:

答案 0 :(得分:3)

当您致电br.readLine()时,换行符将从字符串末尾删除。因此,如果您键入0 + ENTER四次,则会尝试拆分字符串"0000"

最好从stdin中读取项目并将它们存储在可扩展的数据结构中,例如List<String>。如果您已经单独阅读过,则无需拆分。

答案 1 :(得分:0)

更新的答案: 如果您正在从键盘上读取inputstream,则\ n可能无法正确输入数据。在这种情况下,您可能想要选择一个新的哨兵值。

原始答案: 我相信你需要创造一个哨兵价值。因此,如果\n是您的哨兵价值,您可以执行以下操作:

  1. inputstream加载到string变量
  2. 通过string变量检查字符,查看输入中是否有\n(您可以使用for loopsubsting(i, i+2)
  3. 如果找到,则可以将其添加到数组