用“Enter”拆分字符串

时间:2013-11-27 19:35:37

标签: java android string split

我的代码将字符串拆分为3个字符串,然后打印出来。我希望每个人都被相当于“回车”分开。这是代码:

String accval = text;
        try {
            PrintWriter writer = new PrintWriter(new BufferedWriter(
                    new FileWriter("sdcard/YS Data/Accelerometer.html",
                            true)));
            String[] tempArr = accval.split("\\s+");
            String x = tempArr[0] + "_"; //I want the enter to be where the underlines are:
            String y = tempArr[1] + "_";
            String z = tempArr[2] + "_";

            for (String a : tempArr) {
                writer.println("<h3 style=padding-left:20px;>" + x + y
                        + z + "</h3><br>");
            }

            writer.flush();
            writer.close();

        } catch (IOException e) {
            // put notification here later!!!
            e.printStackTrace();
        }

输出:

x=-0.125_y=0.9375_z=0.375
x=-0.125_y=0.9375_z=0.375

字符串用下划线分隔。

但是,我希望它看起来像这样:

x=-0.125 
y=0.9375 
z=0.375
x=-0.125 
y=0.9375 
z=0.375

感谢您的帮助。

编辑:

我在以下代码中实现了@Julius的答案,该代码打印出我想要的方式:

代码:

 String accval = text;
        try {
            PrintWriter writer = new PrintWriter(new BufferedWriter(
                    new FileWriter("sdcard/YS Data/Accelerometer.html",
                            true)));
            String[] tempArr = accval.split("\\s+");
            String x = tempArr[0];
            String y = tempArr[1];
            String z = tempArr[2];

            for (String a : tempArr) {
                writer.println("<h3 style=padding-left:20px;>" + x + "<br>" + y + <br>
                        + z + "</h3><br>");
            }

            writer.flush();
            writer.close();

        } catch (IOException e) {
            // put notification here later!!!
            e.printStackTrace();
        }

打印哪些:

x=0.25
y=125
z=1.23

x=0.125
y=725
z=0.935

4 个答案:

答案 0 :(得分:4)

如果您希望在浏览器中显示换行符,则可以采用以下方法:

writer.println("<h3 style=padding-left:20px;>" + x + "<br/>" + y + "<br/>" + z + "<br/></h3>");

答案 1 :(得分:3)

您可以使用

System.getProperty("line.separator")

获取行分隔符。

答案 2 :(得分:1)

您可以在此处的其他答案中明确写出CR + LF。您也可以通过单独为每个项目使用println来使用默认换行符,例如:

for (String a : tempArr) {
    writer.println("<h3 style=padding-left:20px;>");
    writer.println(x);
    writer.println(y);
    writer.println(z);
    writer.println("</h3><br>");
}

这稍微冗长一些,但在CRLF不是默认行结尾的系统上不会遇到不一致的换行问题。

但请注意,HTML中的换行符可能不会呈现,除非您的CSS指定它们应该是。您可能想要写一个“&lt; br&gt;”在每个元素之后标记而不是实际的换行符,例如:

    writer.println("<h3 style=padding-left:20px;>");
    writer.println(x + "<br>");
    writer.println(y + "<br>");
    writer.println(z + "<br>");
    writer.println("</h3><br>");

您不必为此使用println(您可以使用print或只是像以前那样连接),但它确实使生成的源更具可读性。

偏离主题,您在“&lt; h3&gt;”中使用换行符标头标签在语义上并不合适。一个“&lt; div&gt;”使用适当的样式将是一个更准确的表示,除非这些实际上作为节标题。

答案 3 :(得分:0)

"\r\n"是Windows系统上换行符的正确字符串; "\n"在Linux和其他基于Unix的系统上是正确的。这适用于任何一种系统:

String newline = String.format("%n");

会根据需要将newline设置为"\r\n""\n"(或者某些操作系统来自不同星球的某些其他序列:)

编辑: %n按照定义插入System.getProperty("line.separator"),如另一个答案中所述。所以这些是等价的。