I have a StringBuilder object,
StringBuilder result = new StringBuilder();
result.append(someChar);
Now I want to append a newline characte
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
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).
For Kotlin,
StringBuilder().appendln("your text");
Though this is a java question, this is also the first google result for kotlin, might come in handy.
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."));
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();
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()