How to append a newline to StringBuilder

I have a StringBuilder object,

StringBuilder result = new StringBuilder(); result.append(someChar); 

Now I want to append a newline character to the StringBuilder. How can I do it?

result.append("/n"); 

Does not work. So, I was thinking about writing a newline using Unicode. Will this help? If so, how can I add one?

2

7 Answers

It should be

r.append("\n"); 

But I recommend you to do as below,

r.append(System.getProperty("line.separator")); 

System.getProperty("line.separator") gives you system-dependent newline in java. Also from Java 7 there's a method that returns the value directly: System.lineSeparator()

8

Another option is to use Apache Commons StrBuilder, which has the functionality that's lacking in StringBuilder.

StrBuilder.appendLn()

As of version 3.6 StrBuilder has been deprecated in favour of TextStringBuilder which has the same functionality

3

Escape should be done with \, not /.

So r.append('\n'); or r.append("\n"); will work (StringBuilder has overloaded methods for char and String type).

I create original class that similar to StringBuidler and can append line by calling method appendLine(String str).

public class StringBuilderPlus { private StringBuilder sb; public StringBuilderPlus(){ sb = new StringBuilder(); } public void append(String str) { sb.append(str != null ? str : ""); } public void appendLine(String str) { sb.append(str != null ? str : "").append(System.getProperty("line.separator")); } public String toString() { return sb.toString(); } } 

Usage:

StringBuilderPlus sb = new StringBuilderPlus(); sb.appendLine("aaaaa"); sb.appendLine("bbbbb"); System.out.println(sb.toString()); 

Console:

aaaaa bbbbb 

You can also use the line separator character in String.format (See java.util.Formatter), which is also platform agnostic.

i.e.:

result.append(String.format("%n", "")); 

If you need to add more line spaces, just use:

result.append(String.format("%n%n", "")); 

You can also use StringFormat to format your entire string, with a newline(s) at the end.

result.append(String.format("%10s%n%n", "This is my string.")); 

you can use line.seperator for appending new line in

In addition to K.S's response of creating a StringBuilderPlus class and utilising ther adapter pattern to extend a final class, if you make use of generics and return the StringBuilderPlus object in the new append and appendLine methods, you can make use of the StringBuilders many append methods for all different types, while regaining the ability to string string multiple append commands together, as shown below

public class StringBuilderPlus { private final StringBuilder stringBuilder; public StringBuilderPlus() { this.stringBuilder = new StringBuilder(); } public <T> StringBuilderPlus append(T t) { stringBuilder.append(t); return this; } public <T> StringBuilderPlus appendLine(T t) { stringBuilder.append(t).append(System.lineSeparator()); return this; } @Override public String toString() { return stringBuilder.toString(); } public StringBuilder getStringBuilder() { return stringBuilder; } } 

you can then use this exactly like the original StringBuilder class:

StringBuilderPlus stringBuilder = new StringBuilderPlus(); stringBuilder.appendLine("test") .appendLine('c') .appendLine(1) .appendLine(1.2) .appendLine(1L); stringBuilder.toString(); 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like