diff --git a/concepts/strings/.meta/config.json b/concepts/strings/.meta/config.json index f43806375..6b509f9cf 100644 --- a/concepts/strings/.meta/config.json +++ b/concepts/strings/.meta/config.json @@ -3,5 +3,7 @@ "authors": [ "mirkoperillo" ], - "contributors": [] + "contributors": [ + "fapdash" + ] } diff --git a/concepts/strings/about.md b/concepts/strings/about.md index 1dc4e8205..30f43a83f 100644 --- a/concepts/strings/about.md +++ b/concepts/strings/about.md @@ -22,6 +22,29 @@ String escaped = "c:\\test.txt"; // => c:\test.txt ``` +To put a newline character in a string, use the `\n` escape code (`\r\n` on Windows): + +```java +"\n \n

Hello, World!

\n \n\n" +``` + +For code that should work on varying operating systems Java offers [`System.lineSeparator()`][system-line-separator], which returns the system-dependent line separator string. +This is important if you're writing to files that will be read on the same system. + +To comfortable work with texts that contain a lot of newlines you can use [Text Blocks][text-blocks]. +These multi-line strings are delimited by triple double quote (`"`) characters. + +```java +String multilineHtml = """ + + +

Hello, World!

+ + +"""; +// => "\n \n

Hello, World!

\n \n\n" +``` + Finally, there are many ways to concatenate a string. The simplest one is the `+` operator: @@ -35,15 +58,26 @@ For any string formatting more complex than simple concatenation, `String.format ```java String name = "Jane"; -String.format("Hello %s!",name); +String.format("Hello %s!", name); // => "Hello Jane!" ``` -Other possibilities are: +The conversion `%n` in a format string inserts a system-dependent line separator. + +```java +String name = "Jane"; +String.format("Hello,%n%s!", name); +// => "Hello,\nJane!" (Linux, macOS) +// => "Hello,\r\nJane!" (Windows) +``` + +Other possibilities to build more complex strings are: - use [`StringBuilder` class][string-builder] - use [`String.concat` method][string-concat] [string-class]: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html +[text-blocks]: https://openjdk.org/projects/amber/guides/text-blocks-guide [string-builder]: https://docs.oracle.com/javase/tutorial/java/data/buffers.html [string-concat]: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#concat-java.lang.String- +[system-line-separator]: https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/System.html#lineSeparator()