From 16b9df051f78278cf70b558d5441292a455005a3 Mon Sep 17 00:00:00 2001
From: fap <459631+fapdash@users.noreply.github.com>
Date: Sun, 27 Apr 2025 17:42:42 +0200
Subject: [PATCH 1/4] strings - Expand concept by newline and text blocks
- Add multi-line strings / text blocks (Java 15)
- Add explanation of newlines / end of line chars,
so students can understand the motivation behind text blocks
---
concepts/strings/.meta/config.json | 4 +++-
concepts/strings/about.md | 38 ++++++++++++++++++++++++++++--
2 files changed, 39 insertions(+), 3 deletions(-)
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..01fb69ca4 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 different operating systems Java offers [`System.lineSeparator()`][system-line-separator], which returns the system-dependent line separator string.
+
+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()
From 1b9ca23f071564fef4079b0395c348759002c9ee Mon Sep 17 00:00:00 2001
From: fap <459631+fapdash@users.noreply.github.com>
Date: Sun, 27 Apr 2025 17:58:15 +0200
Subject: [PATCH 2/4] Rewording
---
concepts/strings/about.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/concepts/strings/about.md b/concepts/strings/about.md
index 01fb69ca4..c9d86ec02 100644
--- a/concepts/strings/about.md
+++ b/concepts/strings/about.md
@@ -28,7 +28,7 @@ To put a newline character in a string, use the `\n` escape code (`\r\n` on Wind
"\n \n Hello, World!
\n \n\n"
```
-For code that should work on different operating systems Java offers [`System.lineSeparator()`][system-line-separator], which returns the system-dependent line separator string.
+For code that should work on varying operating systems Java offers [`System.lineSeparator()`][system-line-separator], which returns the system-dependent line separator string.
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.
From 909b87e56f22a42694ccdc0749e01063f4b00026 Mon Sep 17 00:00:00 2001
From: fap <459631+fapdash@users.noreply.github.com>
Date: Sun, 27 Apr 2025 18:09:51 +0200
Subject: [PATCH 3/4] Fix markdown linting errors
---
concepts/strings/about.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/concepts/strings/about.md b/concepts/strings/about.md
index c9d86ec02..7d106cba1 100644
--- a/concepts/strings/about.md
+++ b/concepts/strings/about.md
@@ -30,10 +30,9 @@ To put a newline character in a string, use the `\n` escape code (`\r\n` on Wind
For code that should work on varying operating systems Java offers [`System.lineSeparator()`][system-line-separator], which returns the system-dependent line separator string.
-To comfortable work with texts that contain a lot of newlines you can use [Text Blocks](text-blocks).
+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 = """
From 0e095218a53b560b11e2ad14db612d4512bedb0a Mon Sep 17 00:00:00 2001
From: fap <459631+fapdash@users.noreply.github.com>
Date: Sun, 27 Apr 2025 18:45:24 +0200
Subject: [PATCH 4/4] Clarify when to use system dependent line separators
---
concepts/strings/about.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/concepts/strings/about.md b/concepts/strings/about.md
index 7d106cba1..30f43a83f 100644
--- a/concepts/strings/about.md
+++ b/concepts/strings/about.md
@@ -29,6 +29,7 @@ To put a newline character in a string, use the `\n` escape code (`\r\n` on Wind
```
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.