JavaRush /Java Blog /Random-JA /Java での文字のエスケープ
Oleksandr Klymenko
レベル 13
Харків

Java での文字のエスケープ

Random-JA グループに公開済み
何か問題が発生しました! この記事は、JavaRush チームのポジションのテスト課題として書かれました。そして本格的な講義として書かれていました。このため、この投稿に蓄積された有用な知識の質と量を保証します。この記事には、実践的で理論的な情報に加えて、あなたが知らないかもしれない興味深い事実も含まれています。 Java での文字のエスケープ - 1「こんにちは世界」 文字エスケープは非常に興味深い、必要な技術的解決策です。文字エスケープの必要性は、プログラミング業界全体の歴史において重要な役割を果たしてきました。この記事では、文字エスケープとは何か、文字エスケープが必要な理由、Java での文字エスケープの実装方法について説明します。この記事では、キャラクターエスケープのトピックに関連する例と興味深い事実を紹介します。読書を楽しむ!コンピュータ システム内のすべての情報はテキストの形式で表され、下位レベルではバイトで表されます。私たちは手紙やメッセージを書くとき、相手が理解できるテキストを入力します。IDE でコードを記述するときは、コンパイラーが解析できるテキストを入力します。Java では、テキストは、データが制御文字 (引用符のペア) によって表される型として表すことができますString
String str = "Hello World!";
「Hello World!」というテキストが表示されます。問題は発生しませんが、同じテキストを直接話法で強調表示する必要がある場合はどうすればよいでしょうか? 文法の規則を使用すると、タイプの制御文字に加えて、テキスト「Hello World!」をString直接音声引用符で囲む必要があることがわかります。
String str = "Java said, "Hello World!"";
このオプションは機能しません。コンパイラは、変数の初期化がどの時点で終了するのか理解できませんstr。この問題および同様の問題を解決するために、文字をエスケープする、つまり制御文字をいわゆる制御シーケンス (エスケープ シーケンスとも呼ばれる) に変更することが発明されました。以下は、文字列で使用できる有効な Java エスケープ シーケンスのリストです。 \t — タブ文字 (Java では 4 つのスペースに相当)。 \b— テキスト内の改行文字を 1 つ戻すか、行内の 1 文字を削除します (バックスペース)。 \n— 改行記号。 \r— 復帰記号。 \f— ページを次のページの先頭までスキップします。 \'— 一重引用符文字。 \"— 二重引用符文字。 \\— バックスラッシュ文字 ( \)。ここで、コンパイラが書かれている内容を簡単に解析できるように、フレーズ内の直接話法を強調表示しましょう。
String str = "Java said, \"Hello World!\"";
したがって、変数の内容がstr画面に表示されれば、書かれたテキストはコンパイラと人間の両方にとって理解可能です。文字エスケープとは何か、そしてなぜそれが必要なのかを理解しました。さらに、二重引用符文字もエスケープされています。残りのエスケープ シーケンスの解析に進みましょう。 行内のタブ文字はエスケープ シーケンスによって示され\t、4 つのスペースに似ています。ただし、4 つのスペースで構成される文字列の長さが 4 文字の長さに等しい場合、タブ文字を含む文字列の長さは 1 になります。タブ文字は、テーブルや疑似グラフィックインターフェイス要素を構築するためによく使用されます。スペースを 4 つ書き込むよりも便利です。以下は、疑似グラフィカル インターフェイスの例です。 Java での文字のエスケープ - 2すべてのエスケープ シーケンスの中で、この記号はおそらく最も興味深いものです。この記号を使用すると、バックスペース\bキーを押して文字を消去した場合と同様に、出力行の最後の文字を削除できるからです。
System.out.print("2 + 2 = 5"); // Screen displays 2 + 2 = 5
System.out.print("\b");// Screen displays 2 + 2 =
System.out.print("4");// Screen displays 2 + 2 = 4
シンボルには共通の歴史が\nあります\r。一緒に見てみましょう。改行文字\nに遭遇したことがあるかもしれません。たとえば、メソッドがprintln()次の出力が新しい行になるように情報を出力する場合、メソッドはprint()出力の後に改行を実行しませんが、出力の末尾に文字を追加すると\n改行が実行されます。が実行されます。
System.out.print("Next output will be on a new line\n");
System.out.println("Next output will be on a new line");
キャリッジ リターン文字を\r使用すると、カーソルを出力行の先頭に戻し、その行に以前は何もなかったかのように新しい情報を表示できます。
System.out.print("Text to be rewritten.");//The screen displays "Text to be rewritten."
System.out.print('\r');//The screen is blank
System.out.print("New text.");//The screen displays "New text."
実際、キャリッジ リターンの歴史は、テキストがタイプライターで印刷されていた時代にまで遡ります。改行を実行するには、キャリッジを移動してレバー (タイプライター機構の一部) を下げる必要があり、その後、改行が実行されます。レバーが下げられていない場合は、同じ行に印刷を続けることができます。これは、シンボルを表示するときに観察されるものです\r。この点に関して、プログラマは改行を実行したいときに、習慣で出力の最後に一連の文字を実行してしまいました\r\n。タイプライターの時代が終わりを迎えたとき、自分自身はタイプライターで働いたことはなかったものの、依然としてこのシーケンスを使用していた世代のプログラマーがいました。彼らは、特定のシーケンスを完了するためにどの順序で実行する必要があるかを忘れてしまうことがよくありまし\r\n\n\rreturn次に、これらの記号が表示される順序がはっきりと見えるテストワードが役に立ちました。ただし、その後、MS-DOS 以降の Windows の最初のバージョン用のソフトウェアを開発するとき、プログラマーはシーケンスを使用することを強制されました\r\n。これについては心配する必要はなく、文字のみを使用して改行する必要があります\nJava での文字のエスケープ - 3もう一度、80年代に戻ってみましょう。\f次のページの先頭へページ送りを表す記号が普及したのはこのときです。当時は大型のライン プリンタがあり、これを使用するには、プリンタが何をどのように印刷するかを含むプログラム コードを記述する必要がありました。また、テキストを新しいページから開始する必要があることを示すために、 という記号が使用されました\f。私たちの時代では、このシンボルは長い間その関連性を失っており、遭遇する可能性はほとんどありません。リニアプリンターの寸法は非常に印象的です。 Java での文字のエスケープ - 4記号\’\\すべては二重引用符のエスケープとまったく同じです。記事の冒頭に例がありました。たとえば、char 型を一重引用符で初期化するには、一重引用符をエスケープする必要があります。
char ch = '\'';
バックスラッシュ文字をエスケープして、次の文字がエスケープ シーケンスの一部ではないことを示します。
System.out.println("\\n - line break escape sequence");
// Output: \n - line break escape sequence
実際には、パスを操作するときにバックスラッシュをエスケープする必要があることがよくあります。
System.out.println("It's Java string: \"C:\\Program Files\\Java\\jdk1.7.0\\bin\"");
// Output: It's Java string: "C:\Program Files\Java\jdk1.7.0\bin"
これらのエスケープ シーケンスは文字列 (文字列リテラル) で使用されることを強調しました。残りの部分はクラスの正規表現を説明するために使用されておりPattern、この記事のトピックとは関係ありません。ここで、クラスのすべてのエスケープ シーケンスのリストを確認できますPattern。ただし、Java だけでなく、PHP などの他の一般的なプログラミング言語でも、現在存在する形式の正規表現はエスケープ シーケンスを使用せずには考えられないことに注意してください。Java では、文字エスケープは文字列の書式設定にも使用されます。たとえば、パーセント記号を表示するための文字列形式を指定する場合、パーセント記号 - を複製する必要があります。%%そうしないと、エラーが発生し、IDE はパーセントを追加するように求めるプロンプトを表示します。
System.out.printf("Milk fat percentage : %d%%", 10);
// Milk fat percentage : 10%
これで記事は終わりです。キャラクターエスケープとそれを実践する方法について多くを学んでいただければ幸いです。文字エスケープは多くのプログラミング言語に固有のものです。Java では、他の C 系言語と同様に、このテクノロジはほぼ同じように実装されます。したがって、この記事から得られる知識は Java だけでなく役立つ可能性があります。ご清聴ありがとうございました。勉強頑張ってください!
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION