カテゴリー
Python

文字列に関する色々なメソッドを知ろう

この章では文字列を他の文字列に変換したり、大文字を小文字に変換したりするメソッドなどについて説明します。
初めに一部の文字列を他の文字列に変換する方法について説明します。
では例をみてみましょう。9 一部分の文字列を他の文字列に変換するにはreplaceメソッドを使用します。9 99そして、最後に9と出力していますが、結果は文字を入れ替えたのにも関わらず9となっています。
なぜここで9を出力させているかといいますと、前の過程で文字列の一部をreplaceで変更しましたが、これは元の文字列まで変更させているわけではないことを確認して欲しかったからです。
結果は以下の通りです。9 下の例はreplaceで変更したものをstr2に入れて出力していますが、先ほどの例と結果は同じです。
変更したものを他で使いたい場合には変数に入れてください。9

次は文字列を大文字にしたり、小文字にしたりする方法について説明します。
文字列を大文字にするにはupperメソッド,文字列を小文字にするにはlowerメソッドを使います。
では例をみてみましょう。9 基本構文は以下の通りです。9 これもreplaceと同じく、元の文字列まで変更させているわけではありません。
結果は以下の通りです。9
次の例は変更したものをstr3とstr4に入れて出力していますが、先ほどの例と結果は同じです。
変更したものを他で使いたい場合には変数に入れてください。9
次はsplitメソッドについて説明します。
では例をみてみましょう。9 splitメソッドは文字列を指定した区切り文字で区切って、その結果をリストとして返してくれます。
この例では文字列の中の9で区切っています。
9splitメソッドもreplaceと同じく、元の文字列まで変更させているわけではありません。
結果は以下の通りですが、区切った結果がリストになっているのが分かります。9
次は文字列の検索方法について説明します。
初めに文字列の先頭が指定した文字であるかを調べます。
では例をみてみましょう。9
startswithは文字列の先頭が「指定した文字列」であればtrue、そうでないならばfalseを返します。9 結果は次の通りです。9 startswithメソッドは以下のようなif文などで使われます。9
次は文字列中に指定の文字が含まれているかを調べる方法について説明します。
では例をみてみましょう。9
文字列中に指定した文字列が含まれているかどうかを調べます。
含まれていればtrueを、含まれていなければfalseを返します。
9結果は以下の通りです。9 「in」もstartswithと同じくif文などで使います。9 結果は次の通りです。9

カテゴリー
Ruby

stringクラスについて知ろう

この章ではstring(文字列)クラスについて説明します。
今まではダブルクォートやシングルクォートを付けた文字列を扱ってきましたが、これらはstringクラスのオブジェクトです。
「”犬 “」という文字列は9と書いても同じ意味になります。
ここからはstringクラスに関する便利な機能について説明します。
初めに文字列のサイズを取得する方法について説明します。
例をみてみましょう。9 「文字列.length」と言う形式で日本語や半角英数字や全角英数字などのサイズ(文字数)を取得できます。
この例の結果は上から「5」と「8」です。
バイト数を取得したい場合は9と言う形式で取得します。
では例をみてみましょう。99
次はsplitメソッドについて説明します。
では例をみてみましょう。99 文字列を特定の文字で分割して配列にします。
区切り指定文字は配列には入りません。
この例は文字列を9で区切って、それを配列にします。
結果は9という配列を出力します。
次の例をみてみましょう。9 文字列の中身を1文字ずつ配列で取り出したい場合は9と、記述します。
結果は9です。
次の例をみてみましょう。9 第二引数(先頭から2つ目の引数)は文字列を何個の要素に分割したいかを記述します。
変数aの文字列は9という文字列で一部構成されていますが、これはカラ文字を意味しています。
カラ文字も含めて分割したい場合は第2引数をマイナス指定します。

9でもマイナスであれば何でもいいです。
この例の結果は9です。
このカラ文字を分割時に削除したい場合はsplitメソッドの第 2引数に0を指定してください。
もしくは9と、0を付けなくてもいいです。
結果は9です。
次の例をみてみましょう。9 文字列を2つの要素を持つ配列にしたいのであれば第2引数には2を指定します。
結果は9です。
「”猫”」と9の2つに分割されています。9 次は文字列から要素を取り出したり、文字列の要素に新たな要素をセットする方法について説明します。
では例をみてみましょう。9 9と言う形式で指定するとそれに応じた文字列が取得できます。
添え字は一番前が0で次が9と数えます。
これは配列の添え字と考え方は一緒です。
この例の結果は「s」です。
その他の例をみてみましょう。9 日本語でも同じく使用できます。
結果は「あ」です。9 第 2引数を指定すると取り出す個数を指定できます。この例の場合は0番目の添え字から3個取り出すと言う意味になりますので、結果は「str」です。
次は添え字を使って、文字列の一部の中身を変えます。9 添え字で指定した位置に文字を上書きしたい場合には9と言う形式で指定します。
結果は「stoing」です。
次は「ここからここまで」という指定方法で要素を上書きする方法について説明します。9 「a[2..5]」は文字列の2番目から5番目まで要素を9で置き替えるので、答えは「star」になります。

次は文字列同士をつなげる方法について説明します。
では例をみてみましょう。9 文字列同士をつなげて新しい文字列を作成するには「+」を使用します。
結果は「string123」です。
他の方法でも文字列同士をつなげることは出来ますので例をみてみましょう。99 文字列同士をつなげる方法は2つあり、1つ目は92つ目は9を使います。
これらを使った場合は元の文字列自体の値が変わります。

次は文字列同士を比較する方法について説明します。
では例をみてみましょう。9 文字列同士が一致しているかどうかを調べるには9を使います。
一致していればtrue、一致していなければfalseになります。
次の例をみてみましょう。9 文字列同士が一致していないかを調べるには9を使います。
一致していなければtrue、一致していればfalseになります。

次の例は文字列を繰り返す演算子について説明します。9 「文字列*繰り返す回数」という構文で文字列を繰り返すことが出来ます。
この例では9と言う文字列を3回繰り返しています。
結果は9です。

次は文字列の中の文字が何番目にあるのかを調べる方法について説明します。99 指定の文字列の中で検索したい文字が何番目にあるのかを調べ、その位置を数値で返します。
indexメソッドは前から検索を始めて、rindexメソッドは後ろから検索を始めます。
しかし、何番目にあるのかを数えるのはindexでもrindexでも前からです。
a.index(“n”)は前から検索をするので、結果は4です。0から数えて4番目にあると言う意味です。
a.rindex(“n”)は後ろから検索するので、結果は16です。
ここで注意して欲しいのは後ろから指定文字を検索をするのですが、結果である指定文字の位置の特定は前から数えると言うことです。
では次に進みます。
文字列の中の何番目にあるかでは無くて、ただその文字が存在するかどうかを調べるには9を使います。9 文字列の中に検索文字が存在するかどうかを調べます。
含まれるときはtrue、含まれないときにはfalseを返します。
では例をみてみましょう。9 結果は「yes」です。
次は文字列の一部分を削除するslice!メソッドについて説明します。
では例をみてみましょう。99 結果はbを削除したので「acd」です。
次の例をみてみましょう。99 結果はb,c,dを削除したので「aefg」です。
次の例をみてみましょう。99 結果はb,c,dを削除したので「aefg」です。

次はユーザーに何かを入力してもらう時に使うgetsメソッドについて説明します。
では例をみてみましょう。9 まず初めに「年齢は?」と入力するように促します。
そして、「65」と、入力すると、その入力した結果がageに代入され、結果が出力されます。9 このようにユーザーに入力させるためのメソッドがgetsメソッドです。
ここで気を付けてほしいことは入力値が入っているage変数には改行も一緒に入っていますので9と出力しても、以下のように9だけが改行されてしまいます。9 そこでこの改行を消す機能がRubyには用意されていますので、次の例を見てみましょう。99 chompメソッドは、文字列の最後の改行文字を取り除いた新たな文字列を作成します。
この例ではユーザーが入力した文字列の改行を取り除きます。
結果は以下の通り、改行が取り除かれているのが分かります。9 その他にchomp!メソッドもありますが、これは元の文字列自体から改行を取り除いたものを作成します。9 では例をみてみましょう。9 結果は「abcd」です。

次はchompメソッドと同じようなメソッドのchopメソッドやchop!メソッドについて説明します。
chopメソッドは文字列の末尾が改行でも普通の文字でも関係なく、末尾を削除した新しい文字列を作成します。
chop!メソッドはchopメソッドと機能が同じですが、新しい文字列を作成するのではなく、元の文字列自体から末尾の文字を取り除いたものを作成します。9 では例をみてみましょう。9 結果はdが取り除かれているので「abcです」が出力されます。
chopメソッドの例をみてみましょう。9 ユーザーに入力してもらう場合はgets.chopと、記述します。
結果は以下の通りです。9
次はeach_lineメソッドについて説明します。このメソッドは繰り返し構文の一種ですが、文字列を指定文字で分割して、一行ずつ取り出してくれます。
では例をみてみましょう。99 引数を記述するとその文字列が改行文字になります。
引数を省略するとデフォルトでは9が改行文字になります。9 改行文字を取り除いて文字列を出力したい場合は以下のようにchompを付けます。9 結果は「123」です。
次はeach_byteメソッドについて説明します。
では例をみてみましょう。99 each_byteメソッドは文字列の中の一文字一文字のバイトコードを取り出して、変数に入れて出力するメソッドです。
結果は「8297」です。
R の文字コードが82で、aの文字コードが97なので、8297が出力されます。

次はeach_charメソッドについて説明します。
では例をみてみましょう。99 このメソッドは文字列の一文字一文字に対して繰り返し操作を加えるメソッドです。
結果は「1+2+3+4+」ですが、このように文字と文字の間に何か他の要素を入れたりすることが出来ます。
変数の値を他の文字と結びつけるには9と書きます。
次は文字列の中から特定の要素を削除するdeleteメソッドとdelete!メソッドについて説明します。
では例をみてみましょう。99 deleteメソッドは文字列の中から特定の要素を削除した新しい文字列を作成します。
delete!メソッドは新しい文字列を作成するのではなく、元の文字列から特定の要素を削除した文字列を作成します。
結果は「いうえお」です。
次の例をみてみましょう。9 結果は「いうえお」です。
次は文字列を浮動小数点数(Floatオブジェクト)に変換するto_fメソッドについて説明します。
では例をみてみましょう。9 文字列を浮動小数点数に変換しますが、3.789@の中の「@」のように浮動小数点数とは関係ない要素は削除されます。
9のようにすべて浮動小数点数とは関係ない要素の場合は「0.0」が出力されます。
結果は以下の通りです。9

文字列を10進数の整数に変換するto_iメソッドについて説明します。
では例をみてみましょう。99 文字列を10進数の整数に変換しますが、小数点以下は削除されます。
3.789@の中の「@」のように整数とは関係ない要素は削除されます。
9のようにすべて整数とは関係ない要素の場合は0が出力されます
結果は以下の通りです。9
次はreverse!メソッドとreverseメソッドについて説明します。
では例をみてみましょう。99 これは文字列を逆順に並べるメソッドです。
reverseメソッドは文字列を逆順に並べた新しい文字列を作成します
reverse!メソッドは元の文字列の順序を逆順にしたものを作成します。
結果は「おえういあ」です
次の例をみてみましょう。9 結果は「おえういあ」です。
次は文字列を他の文字列に変更するreplaceメソッドについて説明します。
では例をみてみましょう。9 9このメソッドは文字列を別の文字列に変更します。
この例では「あいうえお」を「かきくけこ」に書き替えます。
結果は「かきくけこ」です。

次は小文字を大文字に変換するupcase!メソッドとupcaseメソッドについて説明します。
では例をみてみましょう。99 upcaseメソッドは小文字を大文字に変換した新しい文字列を作成します。
upcase!メソッドは元の文字列を小文字から大文字に変換した文字列を作成します。
結果は「ABCD」です。
次の例を例をみてみましょう。9 結果は「ABCD」です。
次は大文字を小文字に変換するdowncase!メソッドとdowncaseメソッドについて説明します。
では例をみてみましょう。99 downcaseメソッドは大文字を小文字に変換した新しい文字列を作成します。
downcase!メソッドは新しい文字列を作成するのではなく、元の文字列を大文字を小文字に変換した文字列を出力します。
結果は「abcd」です。
次の例をみてみましょう。9 結果は「abcd」です。
次は文字列がカラかどうかを調べるempty?メソッドについて説明します。
では例をみてみましょう。9 9文字列がカラであるならばtrue,文字列に何か入っていればfalseです。
結果は「カラです」が出力されます。
次は文字列の中の特定の文字の要素数を調べるcountメソッドについて説明します。
では例をみてみましょう。9 99は文字列の中にaが何個あるかを調べ、9は文字列の中にabが何個あるかを調べ,9は文字列の中にaからzまでのアルファベットが何個あるかを調べています。9 先頭の小文字を大文字して、残りの文字列は小文字にするcapitalize!メソッドとcapitalizeメソッドについて説明します。
では例をみてみましょう。9 9capitalizeメソッドは先頭の文字を大文字して、残りの文字列は小文字にする新しい文字列を作成します。
capitalize!メソッドは新しい文字列を作成するのではなく、元の文字列の先頭の文字を大文字して、残りの文字列は小文字にする文字列を作成します。
結果は「Abcd」です。
次の例をみてみましょう。9 結果は「Abcd 」です。
次は文字列の最初の文字を取り除くchrメソッドについて説明します。
では例をみてみましょう。9 9取り除かれた文字列の最初の文字が返されます。
結果は文字列の最初の文字「A」が出力されます。
次は文字列をカラ文字にするclearメソッドについて説明します。
では例をみてみましょう。9 9結果は文字列をカラにするので9です。
つまりカラ文字です。

カテゴリー
Java

文字列を操作するメソッドを知ろう

この章では文字列に関するメソッドについて説明します。
先ほどは自身でメソッドを作成しましたが、ここで説明するメソッドはJavaであらかじめ用意されているメソッドです。
Javaのメソッドの仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、例えばエクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。例えば指定した範囲の引数が3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Javaにはこのように機能が定義されているメソッドが多数ありますので、この章では文字列に関係するメソッドを取り上げたいと思います。
例えば文字列の一部を取り出したり、文字列の長さを計るメソッドです。
次の例ではユーザーに入力させた文字が反対から読んでも同じ文字かどうかを判定するプログラムです。
プログラムの流れは以下の通りです。
〇ユーザーに文字を入力させる
〇入力した文字を反対に並び替える
〇ユーザーが入力した文字と反対に並び替えた文字が同じかどうかを比べる。
では例をみてみましょう。1111 では順番に解説をしていきます。
〇ユーザーに文字を入力させるのですが、ユーザーに入力させるためには以下の記述が必要であることは「if文で星座を判定しよう」で説明しました(BufferedReaderクラスの説明は「キーボードの入力の値を受け取ろう」で説明します)。1 ここではユーザーに入力させた文字をa変数に入れているということを確認してください。
〇次は入力した文字を反対に並び換えます。
入力した文字をcharAtメソッドを使用して、末尾から一文字ずつ取り出して反対文字を作成します。
charAtメソッドは指定した位置にある文字を取り出すメソッドですが、基本構文は以下の通りです。1 例えば「ANA」と入力したとします。
末尾のAを取り出したい場合には1と書きます。
数え方は前から0,1,2…と数えます。1から数えるわけではないので気を付けてください。1 では次の箇所の説明をします。1 charAtのカッコの中の1は文字列の長さを取得しています。1 「ANA」をline.length()で取得すると文字列の長さは3になります。
この例ではfor文で回しているので、iには0から順に数字が入ります。1 文字列の長さから1を引くことで文字列の末尾から順にmoji変数に入れることが出来ます。
moji変数には1文字しか入れないのでデータ型はcharにします。
そして以下のhantai変数にmoji変数の要素をつなげています。
hantai += moji;

〇以下の箇所でユーザーが入力した文字と反対に並び替えた文字が同じかどうかを比べています。
文字列同士を比べているのでequalsを使っています。1 結果は「ANA」と入力したとすると以下のとおり出力されます。1
では次の例を見てみましょう。11 この例は変数mojiが指定した文字で始まっているのか、もしくは指定した文字で終わっているのかを確認するメソッドを使っています。
指定した文字で始まっているのかを調べるメソッドはstartsWithメソッドであり、指定した文字で終わっているのかを調べるにはendsWithメソッドを使います。1 startsWithメソッドの場合は指定した文字で始まっていればRUEを返し、そうでないならばFALSEを返します。
endsWithメソッドの場合は指定した文字で終わっていればTRUEを返し、そうでないならばFALSEを返します。
構文のstartsWithの中の1には整数を入れるのですが、確認したい文字列が1から始まっているのかを調べます。
では説明を始めます。1 =>moji変数はkoから始まっているので、TRUEです。

1 => moji変数はdoから始まっていないので、FALSEです。

1 =>3は「kondou」の前から数えてdの位置です。
doが3の位置から始まっているのかを調べていますので、TRUEです。

1 => moji変数はouで終わっているので、TRUEです。

1 => moji変数はdoで終わっていないので、FALSEです。
例えばこれらのメソッドは以下のように条件式で使います。1 もし、条件式がTRUEであれば、if文を実行して、FALSEであればif文を実行しません。

次はindexOfメソッド、lastIndexOfメソッド、substringメソッド、splitメソッドについて説明します。
では例をみてみましょう。111 初めにindexOfメソッドについて説明します。1 indexOfメソッドは文字列の中で指定した文字列が初めに何番目に現れるかを0から数えた位置番号で返します。
指定した文字列が見つからない場合は「-1」を返します。1 indexOfの第2引数に検索を開始する位置番号がありますが、これは第2引数で指定した位置から検索を始めることを意味します。
初めに第1引数のみを指定した場合の例を見てみましょう。1 =>「”penpenpen”」の中で1が初めに見つかった位置を返すので、0がbに入ります。以下の赤で囲まれている位置に一致するので0を返します。1 次に第1引数と第2引数を指定した場合の例を見てみましょう。1 => indexOfに第2引数がありますが、これは第 2引数で指定した位置から検索を始めることを意味します。
この例では3なので、前から4番目の位置から、指定した「”pen”」のある位置を探して、その位置番号を返します。
つまり、以下の位置から検索を始めるので、結果は3です。1

次はsubstringメソッドについて説明します。1 文字列の中で第1引数に指定した開始位置番号から末尾までの新しい文字列を返します。1 第1引数と第2引数の両方を指定した場合は、第1引数で指定した位置から第2引数で指定した位置から1を引いた位置までの新しい文字列を返します。
初めに第1引数のみを指定した場合の例を見てみましょう。1 =>bには0が入っていますので、先頭から末尾までの文字列を返しますので、結果は1です。
indexOf で位置を確認して、substringで文字列を取り出すケースがよくありますので覚えておいてください。
次の例をみてみましょう。1 substring は bの位置から末尾までの文字列を返すので、結果は1です。
次は第1引数と第2引数を指定した場合の例を見てみましょう。1 第1引数と第2引数の両方を指定した場合は第1引数で指定した位置から第2引数で指定した位置から1を引いた位置までの新しい文字列を返しますので結果は1です。
第2引数は指定した位置から1を引いた位置までなので、eまでではなくて、dまでですので気を付けてください。

次はlastIndexOfメソッドについて説明します。1 lastIndexOfメソッドは文字列の中で指定した文字列が最後に何番目に現れるかを0から数えた位置番号で返します。
指定した文字列が見つからない場合は「-1」を返します。1 lastIndexOfの検索を開始する位置番号はこの指定した位置から先頭に向かって検索を始めることを意味します。
初めに第1引数のみを指定した場合の例を見てみましょう。1 =>「”pen”」が最後に現れる箇所なので、lastIndexOfは6を返します。
bには6が入っているので、substringは「pen」を返します。
次に第1引数と第2引数を指定した場合の例を見てみましょう。
(下の例は先ほどのプログラムにはありません)1 第 2引数は4なので、sの位置から左に検索をかけて、初めに見つかったaの位置を返しますので、結果は3です。1 次はsplitメソッドについて説明します。1 splitメソッドは指定した文字列で分割して、その分割したものを配列で返します。1
「指定した文字列」は「,」なので、これを基準に文字列を分割します。
そして、その分割したものを配列sに入れます。
結果は以下の通りです。
1=>abc
2=>def
3=>g

カテゴリー
Perl

正規表現を理解しよう

この章では正規表現について説明します。
ショッピングサイトでお買い物をする時、電子メールや住所などの個人情報を入力しますが、電子メールや郵便番号などが正しく入力されているのかを調べる必要があります。
そのような時に正規表現を使います。
正規表現とは電子メールや郵便番号などの文字の並びをパターン化して、正規表現特有の記号で表現する1つの形式です。
[基本構文]1 構文の中の「パターン」に正規表現特有の記号を記述します。
正規表現特有の記号は1で囲みます。
文字列に対してパターンが一致するかどうかをチェックし、一致すればTRUEになり、一致しなければFALSEになります。
では例を見てみましょう。111 このように正規表現と言うのは文字などが正しく入力されているのかをチェックする機能を持っています。
電話番号が正しく入力されているのかなど簡単にチェックできますので、とても便利な機能です。111111111111111111111111111111111111111111111111111111111111111
以下の例は正規表現を1に変更して、括弧を3つに増やしました(外側に括弧を増やしました)。1111文字列を正規表現のパターンで分割するsplit関数について説明します。
11次の例は第3引数を2に指定していますので、文字列を2つに分割します。1 結果は以下の通りです。
nakata
Japan,34
1この例は正規表現で指定したパターンにマッチした文字を指定した文字に置き換えますが、以下の構文を使っています。
11上の例でpenは2つありますが、初めに出てくるpenだけしか変換されませんが、以下のように1を指定することですべての文字列が対象になります。
1を指定すると大文字と小文字を区別しないで置換します。
11では次の例に進みます。
11111「tr/ / /」は文字を変換したり、削除するために使われます。
「s/ / /」と似た働きがありますが、違う働きがありますので、違いを説明します。11111111