MakeCode には、文字列を操作するための多くのブロックがあります。ここでは、文字列の長さを求める方法、任意の数の文字列を結合する方法、2つの文字列を比較する方法、文字列から部分を抽出する方法、文字列を数値に変換する方法、文字列から指定されたインデックスで文字を抽出する方法を学びます。
1.文字列の長さ
(1) 目的
文字列の長さを得る
(2) 方法
- ツールボックスで、基本カテゴリをクリックします。次に、数を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
- ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
- 文字列の長さブロックをクリックしてドラッグし、数を表示ブロックの内側に配置します(図1)。
Javascriptで書くと、以下の通りです。
basic.showNumber("Hello".length)
Pythonで書くと、以下の通りです。
basic.show_number(len("Hello"))
(3) 解説
文字列の長さブロックは、提供されたテキストのスペースを含む文字数を整数として返します。
したがって、microbitディスプレイに出力を表示するには、文字列の長さブロックを数を表示ブロックで使用する必要があります。
2.文字列の結合
(1) 目的
2つ以上の文字列をつなぎ合わせて文章にしたい。
(2) 方法
例として、以下のような文字列を結合してテキストを作成します。
「apple」「banana」
- ツールボックスで、基本カテゴリをクリックします。次に、文字列を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
- ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
- 文字列をつなげるブロックをクリックしてドラッグし、文字列を表示ブロックの内側に配置します(図2)。
Javascriptで書くと、以下の通りです。
basic.showString("apple" + "banana")
Pythonで書くと、以下の通りです。
basic.show_string("apple" + "banana")
同様に、以下のような文字列を結合してテキストを作成します。
「apple」「banana」「orange」
- 文字列をつなげるブロックの追加ボタン(プラスアイコン)をクリックすると、新しいテキストボックス(3つ目のテキストボックス)が追加されます。
- 3つ目のテキストボックスには、文字列 orangeを入力してください。
- 完成したら、コードは次のようになるはずです(図3)。
(3) 解説
文字列をつなげるブロックは、任意の数の文字列を結合してテキストを作成します。これは常に文字列を返します。
したがって、出力を micro:bit 表示に向けるために、文字列をつなげるブロックの中に配置する必要があります。
文字列をつなげるブロックには2つのデフォルトの文字列(Hello World)が含まれています。追加ボタン(プラスアイコン)と削除ボタン(マイナスアイコン)をそれぞれクリックすることで、文字列をつなげるブロック内のテキストボックスを追加または削除することができます。
Javascriptで書くと、以下の通りです。
basic.showString("apple" + "banana" + "orange")
Pythonで書くと、以下の通りです。
basic.show_string("apple" + "banana" + "orange")
3.二つの文字列を比較する
(1) 目的
2 つの文字列のうち、どちらの文字列が先にあるか比較したい。
(2) 方法
例として、以下の2つの文字列を比較します。
「apple」「banana」
- ツールボックスで、基本カテゴリをクリックします。次に、数を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
- ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
- 文字列を比べるブロックをクリックしてドラッグし、数を表示ブロックの内側に配置します。
- 文字列を比べるブロックで、最初のテキストボックスをクリックして、文字列「banana」と入力します。次に、2 番目のテキストボックスをクリックして、「apple」と入力します(図4)。
Javascriptで書くと、以下の通りです。
basic.showNumber("banana".compare("apple"))
Pythonで書くと、以下の通りです。
basic.show_number("banana".compare("apple"))
(3) 解説
2つの文字列は、ASCIIエンコーディングの文字の順番に基づいて比較されます。
以下の条件に基づいて出力されます。
- 文字列1が文字列2より大きい場合は1を返します。
- 両方の文字列が等しい場合、0を返します。
- 文字列1が文字列2より小さい場合は-1を返します。
文字列を比べるブロックでは、数を表示または文字列を表示を使用することができます。ブロックを使用して、出力をマイクロビット表示に変換します。
4.文字列の切り取り
(1) 目的
文字列から一部を切り取りたい
(2) 方法
例として、文字列 this から部分文字列 hi を取り出します。
- ツールボックスで、基本カテゴリをクリックします。次に、文字列を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
- ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
- 文字列〇の〇番目から〇文字ブロックをクリックしてドラッグし、それを文字列を表示ブロックの内側に配置します。
- 文字列〇の〇番目から〇文字ブロックで、最初のテキストボックスをクリックして、文字列 thisを入力します。次に、2番目のテキストボックスをクリックして、値1と入力してください。最後に、3番目のテキストボックスをクリックして、値2を入力してください(図5)。
Javascriptで書くと、以下の通りです。
basic.showString("this".substr(1, 2))
Pythonで書くと、以下の通りです。
basic.show_string("this".substr(1, 2))
(3) 解説
文字列〇の〇番目から〇文字は、文字列の一部を取得するために使用することができます。文字列の長さは、空白、句読点、制御文字を含む文字数です。最初の文字のインデックスは0、2文字目は1、などとなります。最後の文字のインデックスは(文字列の長さ)-1です。
ブロックの部分文字列の最初のパラメータは対象の文字列を入れます。2 番目のパラメータは、取り出す文字列の最初の文字のインデックスを入れます。3番目のパラメータは、空白、句読点、制御文字を含む取り出す文字列の文字数を入れます。
例えば、文字列 ‘I have a pen’ から部分文字列 ‘have’取得したいと想像してみてください。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
I | h | a | v | e | a | p | e | n |
- まず、文字列に含まれる文字のインデックスを与えます。
- 次に、部分文字列の最初の文字のインデックスを求めます。
- 最後に、部分文字列の文字数を数えます(図6)。
- 最初のパラメータ(対象の文字列) – 完全な文字列で、これは I have a pen.
- 2番目のパラメータ (開始位置) – 部分文字列の最初の文字のインデックス
- 3番目のパラメータ(長さ) – 部分文字列の文字数
Javascriptで書くと、以下の通りです。
basic.showString("I have a pen".substr(2, 4))
Pythonで書くと、以下の通りです。
basic.show_string("I have a pen".substr(2, 4))
5.文字列内の指定した位置の文字を取得する
(1) 目的
文字列内の指定した位置の文字を取得したい
(2) 方法
例として、文字列のインデックス3の文字を取得します。
こんにちは。
- ツールボックスで、基本カテゴリをクリックします。次に、文字列を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
- ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
- 文字列〇の〇番目の文字ブロックをクリックしてドラッグし、それを 文字列を表示ブロックの内側に配置します。
- 文字列〇の〇番目の文字ブロックの最初のテキストボックスに、文字列 microbitと入力します。2 番目のテキストボックスには、数字の 3 を入力します。
- 完成すると、コードは次のようになります (図7)。
Javascriptで書くと、以下の通りです。
basic.showString("microbit".charAt(3))
Pythonで書くと、以下の通りです。
basic.show_string("microbit".char_at(3))
(3) 解説
文字列〇の〇番目の文字ブロックは、任意の文字列の指定された位置にある文字を返します。この位置はインデックスとして知られています。文字列の最初の文字のインデックスは 0、2 番目の文字のインデックスは 1 となります。最後の文字のインデックスは(文字列の長さ)-1です。
文字列〇の〇番目の文字ブロックの最初のパラメータは対象の文字列を入力します。
2 番目のパラメータには、返したい文字のインデックスを指定します。文字には、スペース、句読点、制御文字などを指定することができます。
インデックスから外れた数値や負の数値を与えられた場合、micro:bit表示は何も出力しません。
6.文字列を数値に変換する
(1) 目的
数字の文字からなる文字列を数値に変換したい。
(2) 方法
例として、文字列-1.23を数値値-1.23に変換します。
- ツールボックスで、基本カテゴリをクリックします。次に、文字列を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
- ツールボックスで高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
- 文字列〇を数値に変換するブロックをクリックしてドラッグし、それを数を表示ブロックの内側に配置します 。
- 文字列〇を数値に変換するブロックで、テキストボックスをクリックして、文字列 -1.23と入力します。
- 完成すると、コードは次のようになります(図8)。
Javascriptで書くと、以下の通りです。
bbasic.showNumber(parseFloat("-1.23"))
Pythonで書くと、以下の通りです。
basic.show_number(parse_float("-1.23"))
(3) どのように機能するか
文字列〇を数値に変換するブロックでは、数値文字からなる文字列を浮動小数点数の値に変換することができます。入力文字列には、’-‘ (マイナス) と ‘.’ (小数点) シンボルを指定することもできます。文字列の最初の文字がマイナス記号の場合、文字列は負の浮動小数点数に変換されます。文字列が次のようなものであれば
123abcの場合、数値部分は123という数値に変換されます。文字列がabc123のようなものであれば、例外として知られるNaN(Not a Number)エラーがmicro:bitディスプレイに表示されます。
表2に、文字の組み合わせの種類が異なる文字列の出力を示します。
文字列 | 出力 |
---|---|
123 | 123 |
12 3 | 12 |
12-3 | 12 |
1.23 | 1.23 |
12/3 | 12 |
abc | NaN |
123abc | 123 |
abc123 | NaN |
ab123c | NaN |
特殊なケース
入力文字列が4e2のようなものであれば、e は 10 の指数になります。
e の後の 2 は 10 の 2 乗として計算され、10 ∗ 10 、つまり100 となります。
その結果、4 ∗ 100 となり、400 となります。
コメントを残す