トラック
/
Java
Java
/
演習
/
ピカピカ
ピカピカ

ピカピカ

学習演習

はじめに

文字

文字

Javaのcharプリミティブ型は、1文字を16ビットで表す型です。 複数のcharを組み合わせて"word"のような文字列にすることもできますし、charを1つずつ個別に扱うこともできます。 charリテラルはシングルクォートで囲みます(例:'A')。

char lowerA = 'a';
char upperB = 'B';

Stringのcharを取得する

String.toCharArrayメソッドは、文字列のcharを配列として返します。 配列の回で説明したように、forループを使って配列を順に処理できます。

String text = "Hello";
char[] asArray = text.toCharArray();

for (char ch: asArray) {
    System.out.println(ch);
}

// Outputs:
// H
// e
// l
// l
// o

Characterクラス

charを調べたり操作したりするためのメソッドが、標準ライブラリにたくさん用意されています。 それらはjava.lang.Characterクラスの静的メソッドとして使うことができます。 いくつか例を見てみましょう。

Character.isWhitespace(' ');    // true
Character.isWhitespace('#');    // false

Character.isLetter('a');        // true
Character.isLetter('3');        // false

Character.isDigit('6');         // true
Character.isDigit('?');         // false

charをStringに追加する

+演算子を使うと、charをStringに追加できます。

'a' + " banana"     // => "a banana"
"banana " + 'a'     // => "banana a"
Caution

2つのcharをつないでStringを作るときに、+を_使わない_ように注意してください! この方法で2つのcharを足し合わせると、Stringでは_なく_、intになります! 例えば:

'b' + 'c';
// => 197 (not the String "bc")

これは、Javaがcharをintに昇格させるためです(Java Language Specificationの4.2 Primitive Types and Values を参照してください)。

ただし、追加する文字が多いときは、代わりにStringBuilderを使うほうが効率的な場合があります。

StringBuilder builder = new StringBuilder();
builder.append('a');
builder.append('b');
builder.append('c');

String builtString = builder.toString();
// => abc

説明

この演習では、エンジニアがSqueakyClean名をきれいにするための、ユーティリティルーチンの一部を実装します。

4つのタスクを通して、cleanメソッドを少しずつ作り上げていきます。 有効なSqueakyClean名は、0個以上の英字とアンダースコアで構成されます。

どのような場合でも、入力文字列はnullでないことが保証されています。なお、cleanメソッドは空文字列を有効なものとして扱う必要があります。

1. 空白をアンダースコアに置き換える

(静的)SqueakyClean.clean()メソッドを実装して、空白をアンダースコアに置き換えます。これは先頭と末尾の空白にも当てはまります。

SqueakyClean.clean("my   Id");
// => "my___Id"

2. ケバブケースをキャメルケースに変換する

(静的)SqueakyClean.clean()メソッドを変更して、ケバブケースをキャメルケースに変換します。

SqueakyClean.clean("a-bc");
// => "aBc"

3. リート語を通常のテキストに変換する

(静的)SqueakyClean.clean()メソッドを変更して、リート語を通常のテキストに変換します。

簡単のため、4、3、0、1、7をそれぞれa、e、o、l、tに置き換えるだけにします。

SqueakyClean.clean("H3ll0 W0rld");
// => "Hello_World"
SqueakyClean.clean("4 73s7");
// => "a_test"

4. 英字以外の文字を省略する

(静的)SqueakyClean.clean()メソッドを変更して、英字以外の文字をすべて省略します。

SqueakyClean.clean("a$#.b");
// => "ab"
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Java Exercism

ピカピカを始める準備はできましたか?

Exercismに登録すれば、26個のコンセプト158個の演習、そして本物の人間によるメンタリングとともに、Javaを学んでマスターできます。すべて無料です。