Core JavaScript 1.5 Guide:Predefined Core Objects:String Object
出典: MDC
[編集] String オブジェクト
String オブジェクトにはプロパティが 1 つあります。それは length で、これは文字列中の文字の数を表します。例えば、次のコードは x に 13 という値を代入します。"Hello, World!" は 13 文字だからです。
mystring = "Hello, World!" x = mystring.length
String オブジェクトには 2 種類のメソッドがあります。これは、substring や toUpperCase のような、その文字列そのものを変形させたものを返すものと、bold や link のような、その文字列を HTML として整形したものを返すものです。
例えば先の例を流用すると、mystring.toUpperCase() も "hello, world!".toUpperCase() も、"HELLO, WORLD!" という文字列を返します。
substring メソッドは 2 つの引数をとり、その 2 つの引数の間の文字列のサブセットを返します。先の例を流用すると、mystring.substring(4, 9) は "o, Wo" という文字列を返します。詳しくは コア JavaScript リファレンス の String オブジェクトの substring メソッドを参照してください。
String には自動的に HTML に整形するメソッドも多くあります。これは太字のテキストを生成する bold や、ハイパーリンクを生成する link などがあります。例えば、link メソッドを用いてある架空の URL へのハイパーリンクを作成するには次のようにします。
mystring.link("http://www.helloworld.com")
次の表で String オブジェクトのメソッドについて簡単に説明します。
| メソッド | 説明 |
|---|---|
| anchor | HTML の名前付きアンカを作成する。 |
| big, blink, bold, fixed, italics, small, strike, sub, sup | HTML の整形済み文字列を作成する。 |
| charAt, charCodeAt | 文字列中の指定した位置の文字または文字コードを返す。 |
| indexOf, lastIndexOf | 文字列中の指定した部分文字列の位置や指定した部分文字列の最後の位置をそれぞれ返す。 |
| link | HTML のハイパーリンクを作成する。 |
| concat | 2 つの文字列を連結し、新しい文字列を返す。 |
| fromCharCode | 指定した Unicode 値の連続から文字列を構成する。これは String クラスのメソッドであり、String インスタンスのものではない。 |
| split | String オブジェクトを文字列の配列に分配する。文字列を部分文字列に分割することで行う。 |
| slice | 文字列から一部分を抽出し、新しい文字列を返す。 |
| substring, substr | 文字列の指定したサブセットを返す。開始および終了のインデックス、または開始のインデックスおよび長さのいずれかを指定する。 |
| match, replace, search | 正規表現を取り扱う。 |
| toLowerCase, toUpperCase | 文字列をすべて小文字に、またはすべて大文字にしてそれぞれ返す。 |
表 7.4:String インスタンスのメソッド
[編集] 文字列リテラルは String オブジェクトとは別物
String オブジェクトは文字列のプリミティブデータ型のラッパです。文字列リテラルと String オブジェクトを混同してはいけません。例えば、次のコードでは文字列リテラルの s1 と String オブジェクトの s2 を作成します。
s1 = "foo" // 文字列リテラルの値を作成
s2 = new String("foo") // String オブジェクトを作成
文字列リテラルの値でなら、String オブジェクトのどんなメソッドでも呼び出すことができます。JavaScript が自動的に文字列リテラルを一時的な String オブジェクトに変換し、メソッドを呼び出し、その一時的な String オブジェクトを破棄するのです。String.length プロパティを文字列リテラルで使うこともできます。
特に String オブジェクトを使う必要がない場合は文字列リテラルを使うようにしてください。String オブジェクトは直観的ではない挙動をとることがあるからです。次の例をご覧ください。
s1 = "2 + 2" // 文字列リテラルの値を作成
s2 = new String("2 + 2")// String オブジェクトを作成
eval(s1) // 数値 4 を返す
eval(s2) // 文字列 "2 + 2" を返す