0Pricing
Java Academy · レッスン

インデントと除去

不要な空白を制御します

「インデントと除去」は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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. テキストブロックの宣言
  2. インデントと除去
  3. テキストブロック内のエスケープ
  4. ユースケース:JSONとSQL
← Java Academyに戻る