| 基礎解説 チェック式 WSH入門 第4回 2.文字列処理関数を使いこなすMicrosoft MVPVisual Developer - Scripting 牟田口 大介 2006/08/18 |
![]() |
|
|
|
文字列処理関数 その1(大文字/小文字変換)
文字列を扱う関数は、多数用意されている。引数に指定した文字列に何らかの加工を施して、戻り値として文字列を返すものが多い。例えばLCase関数は、引数に文字列を取り、その文字列に含まれるアルファベットの大文字(uppercase)を小文字(lowercase)に変換して、変換後の文字列を戻り値として返す(大文字以外の文字はそのまま)。UCase関数はその逆で、小文字を大文字に変換する(小文字以外の文字はそのまま)。
Option Explicit |
このサンプルでは、LCase関数とUCase関数を使って、strSource変数のアルファベット文字列を小文字と大文字にそれぞれ変換し、その戻り値である文字列をそれぞれ変数strLower、strUpperに代入している(4行目と5行目)。そしてこれらの結果をMsgBox関数で表示している。
このスクリプトを実行すると、次のメッセージ・ボックスが表示される。
![]() |
| LCase関数、UCase関数の実行例 |
| 大文字が小文字に、小文字が大文字に変換される。 |
これらは引数に文字列を1つ取り、戻り値に文字列を返す最も単純な関数である。同様の関数に、文字列の左右(先頭と末尾)、あるいは両方のスペースを取り除くためのLTrim、RTrim、Trim関数などがある。
なお、このサンプルでは、strSourceなどの変数名にstrという接頭辞を付けているが、これは変数のデータ型が文字列型(String)であることを強調するためだ。次回、データ型について説明するが、いまは、データ型とは変数の「種類」であり、この関数で扱っている変数が文字列であるということだけを理解しておけばよいだろう。
文字列処理関数 その2(文字列から一部を切り出す)
引数に文字列のほかに値を指定する関数もある。その例としてLeft関数を見てみよう。Left関数は、第1引数に指定した文字列の左から、第2引数に指定した文字数分だけ文字列を切り出して戻り値として返す。Right関数は、同様に右から数文字取り出す関数である。左右ではなく真ん中から一部の文字列を取り出すにはMid関数を使えばよい。サンプル・コードをご覧に入れよう。
Option Explicit |
このスクリプトを実行すると、次のメッセージ・ボックスが表示される。
![]() |
| Left関数、Right関数、Mid関数の実行例 |
| 文字列の左右から、あるいは真ん中から文字列を抜き出すことができる。 |
このように、文字列の一部を抜き出すことが自由自在に行える。なお、Mid関数は第3引数(抜き出す文字列の数)を省略すると、文字列の最後までを抜き出す。また、文字列の先頭の文字を1文字目と数える。
これらの関数の引数には変数ではなく、文字列リテラル(特定の文字列そのもの)を指定してもよいし、英語のみならず日本語でも同様に使用できる。例えば、「事件は会議室で起きてるんじゃない」という文字列から先頭の「事件」を切り出して表示するには、
MsgBox Left("事件は会議室で起きてるんじゃない", 2) |
のように記述することで可能だ。
文字列処理関数 その3(文字列の部分変換)
複数の文字列を引数に取る関数もある。その中でよく使うのが、文字列の一部を変換するReplace関数だ。Replace関数は、第1引数に含まれる、第2引数の文字列を、第3引数の文字列で置換した文字列を返す関数である。
Option Explicit |
このスクリプトを実行すると次のメッセージ・ボックスが表示される。
![]() |
| Replace関数の実行例 |
| 文字列の一部が置換される。 |
このサンプルでは、「日本沈没」という文字列に含まれる「日本」という文字列を「日本以外全部」に置換している。Replace関数は、第3引数までの指定が必須だが、ほかに省略可能な第4引数、第5引数、第6引数を指定することで、検索開始文字の位置や置換する文字列数などの指定もできる(詳細はVBScriptのReplace関数のヘルプを参照)。
これまでは文字列を引数に取り、文字列を返す関数を説明してきたが、文字列を取り、数値を返す関数もある。そのうちの1つ、Len関数は文字列の長さ(文字数)を返す関数である。
Option Explicit |
このスクリプトを実行すると、次のメッセージ・ボックスが表示される。
![]() |
| Len関数の実行例 |
| 文字列に含まれる文字数を得ることができる。 |
これは、指定した文字列の文字数を表示する例である。Len関数の戻り値は数値だが、すでに説明したとおり、&演算子で連結すると、数値が文字列に変換され結合される。
なお補足だが、「"」(ダブルクオーテーション)を文字列中に記述するには、「""」のように2つ重ねて記述する。
![]() |
| ダブルクオーテーションを文字として出力する |
| ダブルクオーテーション(")を文字列として出力するには、2回続けて記述する。 |
文字列処理関数 その4(文字列中の文字位置を調査する)
同様に数値を返す関数として、文字列に、ある文字列が含まれているかどうか、また見つかった場合に、その文字位置を調べる関数がInStr関数、InStrRev関数だ。
Option Explicit |
このスクリプトを実行すると次のようになる。上は「カリウム」を、下は「炭素」をそれぞれ入力した結果である。
![]() |
![]() |
| InStr関数の使用例 |
| 検索対象文字列があるかどうかを調べ、ない場合は「ありません」と表示し、ある場合は見つかった位置を表示する。 |
このサンプルでは、元素名を複数含んだ文字列の中に、InputBox関数で入力した元素名があるかどうかを調べ、あった場合はどの位置にあるかを表示する。このように、InStr関数では、第2引数に検索対象文字列を指定し、第3引数に検索する文字列を指定すると、その文字位置を返す(第1引数は検索開始位置を指定するものだが省略可能で、省略時には第2引数の文字列の最初から検索する)。例えば、先頭にあれば1が結果として返される。しかし検索する文字列が見つからなければ0を返す。なお、intPosition変数の接頭辞intは、数値型の1つである整数型(Integer)であることを示す。同様にInstrRev関数は文字列を検索するのだが、InStrとは逆に、文字列の後ろから検索し、文字列が見つかった位置を返す。
文字列処理関数 その5(組み合わせ利用)
これまでに文字列を使う関数の一部を紹介したが、実際はこれらの関数を組み合わせて複雑な文字列処理をしていくことが多い。例えば、指定したファイルのフルパス名から、ファイル名を抜き出すには、次のようなコードを書く。
Option Explicit |
![]() |
| Mid関数とInstrRev関数を組み合わせた例 |
| ファイルのフルパスからファイル名を取得している。 |
この例では、InstrRev関数を用い、C:\Program Files\Internet Explorer\iexplore.exeというパスの後ろから”\”を検索し、最初に見つかった文字位置の次(+1することで指定)の文字位置を、Mid関数の第2引数に指定することで、”\”より後の文字列、すなわちファイル名を取得している。
では次に、同じ文字列を取り上げ、親フォルダのフルパスとドライブ名を取り出す方法を考えてもらいたい。
Option Explicit
|
この例でも文字列処理関数を複数組み合わせることで目的の文字列を取り出している。特にLeft、Right、Mid関数とInstr、InstrRev関数の組み合わせはよく使うので覚えておくとよいだろう。
| INDEX | ||
| [基礎解説]チェック式 WSH入門 | ||
| 第4回 関数を使いこなす(その1) 文字列、数値、日付を扱う関数 | ||
| 1.VBScriptの関数を使いこなそう | ||
| 2.文字列処理関数を使いこなす | ||
| 3.数値演算関数を使いこなす | ||
| 4.日付処理関数を使いこなす | ||
| 基礎解説 |
ホワイトペーパー(TechTargetジャパン)
- 第207話 究極の人事システム (2010/2/9)
部長、わが人事部が開発した究極の人事評価システムがついに完成しました! これで不要な社員が一発で分かります! - WindowsTIPS (2010/2/5)
− netshコマンドでTCP/IPのパラメータを設定する
− Virtual PC 2007の共有NATで利用可能なアドレス範囲
− スタンバイ復帰でパスワード入力を要求されないように - 仮想環境でActive Directoryを利用する (2010/2/4)
仮想環境にADをインストールすれば、自由にActive Directoryドメイン・ネットワークを構築して実験できる - 第206話 バナー広告案 (2010/2/2)
いまどきWebマーケティングが不可欠なのは分かるが、強烈な競合に並べてバナーなんか出して、勝ち目はあるのか?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |















