2013-11-27 94 views
1

我有将字符串分成3个字符串然后打印它们的代码。我希望每个人都能被“Enter”等同分开。下面的代码:用“Enter”分隔字符串

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

如果你想把行返回ns将在浏览器中显示,这是要走的路线:

writer.println("<h3 style=padding-left:20px;>" + x + "<br/>" + y + "<br/>" + z + "<br/></h3>"); 
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指定它们应该是。你可能想只写一个“< BR>”标签中的每个元素,而不是实际的线突破之后,例如:

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或就像以前一样进行连接),但它确实使生成的源代码更具可读性。

偏离主题,在“< h3>”标题标记中使用换行符在语义上并不合适。具有适当样式的“< div>”将是一种更准确的表示形式,除非它们实际上用作节标题。

+1

谢谢你:)如果我可以同时接受贾森C和朱利叶斯的答案,我会的,他们都很好。再次感谢 – Gurfuffle

+0

Re:换行符。我将它保存到一个html文件中,并且我刚刚启动了java,并且正在为一个项目执行此操作,所以我的代码被扔在一起。感谢指出虽然:) – Gurfuffle

3

您可以使用

System.getProperty("line.separator")

得到一个行分隔符。

+0

从特殊情况下逃脱最通用和最好的方式。 – shinyuX

0

"\r\n"是Windows系统上换行的正确字符串; "\n"在Linux和其他基于Unix的系统上是正确的。

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

将设置newline"\r\n""\n"适当(或者其他一些序列上的一些操作系统的来自不同的星球:)

编辑:%n这将在任一类型的系统工作按照定义插入System.getProperty("line.separator")正如在另一个答案中指出的。所以这些是相同的。