インデントと除去
不要な空白を制御します
「インデントと除去」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。
意図的な空白と偶発的な空白
コードに合わせてテキストブロックをインデントすると、そのインデントは付随的なものであり、文字列の一部にはなりません。Javaはそれを自動的に取り除き、本質的な空白だけを残します。
終端デリミタがマージンを設定する
Javaはすべての内容行と終端の"""を調べ、空白でない文字が共通して最も左に現れる列を見つけます。そのマージンより左にあるものはすべて取り除かれます。
public class Main {
public static void main(String[] args) {
String text = """
Hello
World
""";
System.out.println("[" + text + "]");
}
}終端の引用符を左に移動する
終端の"""が内容よりも左にある場合、各行の先頭にある余分なスペースは本質的な空白として保持されます。
public class Main {
public static void main(String[] args) {
String text = """
Hello
World
""";
System.out.print(text);
}
}行末の空白は取り除かれる
各行末のスペースは自動的に取り除かれます。これにより、通常の文字列で問題になりやすい、見えない行末スペースによるバグを防げます。
public class Main {
public static void main(String[] args) {
String text = """
line one
line two
""";
for (String line : text.split("\n")) {
System.out.println("<" + line + ">");
}
}
}stripIndentメソッド
String.stripIndent()メソッドは、実行時に任意の文字列へ同じ付随的な空白の処理を適用します。テキストブロックは内部でこのメソッドを使用しています。
public class Main {
public static void main(String[] args) {
String raw = " a\n b\n c\n";
System.out.print(raw.stripIndent());
}
}内部のインデントを制御する
マージンを基準としたインデントは保持されます。ここでは2行目が1行目より深くインデントされており、その追加分のインデントは出力にも残ります。
public class Main {
public static void main(String[] args) {
String tree = """
root
child
grandchild
""";
System.out.print(tree);
}
}indentメソッド
String.indent(int n)は、すべての行の先頭にn個のスペースを追加し、末尾に改行があることを保証します。テキストのブロックを入れ子にする場合に便利です。
public class Main {
public static void main(String[] args) {
String text = """
a
b
""";
System.out.print(text.indent(4));
}
}stripとtrimの違い
ブロック全体の先頭と末尾から空白を取り除くにはstrip()を使用します。古いtrim()とは異なり、strip()はUnicodeに対応しています。
public class Main {
public static void main(String[] args) {
String text = """
content
""";
System.out.println("[" + text.strip() + "]");
}
}終端の引用符を単独の行に置く
終端の"""を単独の行に置くと、文字列は末尾に改行を含んで終わります。最後の文字の直後に置けば、その改行をなくせます。
public class Main {
public static void main(String[] args) {
String withNewline = """
done
""";
String noNewline = """
done""";
System.out.println("A:" + withNewline.length());
System.out.println("B:" + noNewline.length());
}
}コードに合わせて配置する
読みやすさのために、周囲のコードに合わせてブロック全体をインデントできます。その場合、付随的なインデントは値から取り除かれます。
public class Main {
static String menu() {
return """
Start
Options
Quit
""";
}
public static void main(String[] args) {
System.out.print(menu());
}
}マージンを確認する
空白の除去をデバッグするには、各行をマーカーで囲みます。どの先頭スペースが実際に残ったのかを正確に確認できます。
public class Main {
public static void main(String[] args) {
String block = """
x
y
""";
for (String line : block.split("\n")) {
System.out.println("|" + line + "|");
}
}
}クイックチェック
テキストブロックからどれだけの先頭の(付随的な)空白が取り除かれるかは、何によって決まりますか?
まとめ
インデントと空白の除去について学びました。
- 付随的なインデントは自動的に取り除かれます
- 終端の
"""の位置でマージンを設定できます - 行末の空白は取り除かれます
- 実行時には
stripIndent()、indent(n)、strip()が役立ちます - 終端の引用符の位置で最後の改行を制御できます
よくある質問
「インデントと除去」レッスンは無料ですか?
はい。「インデントと除去」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。
「インデントと除去」で何を学びますか?
不要な空白を制御します ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「インデントと除去」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。