JavaScript 標準ライブラリ String
出典: フリー教科書『ウィキブックス(Wikibooks)』
[編集] Stringオブジェクト
Stringオブジェクトは、文字列の操作を行うために用意されている。メソッドの集合体である。 宣言は基本的にnew文を使用して次のように行う。
var str = new String("abrakadabra");
ただし、次のように書いても意味は同じである。
var str = "abrakadabra";
そのため通常はこちらが使われる。
[編集] プロパティ
[編集] length
文字列の長さを返す。
var str = "Hello, JavaScript World!"; document.write( str.length ); // 結果は24
[編集] メソッド
[編集] toString()
文字列に変更するメソッドであるが、実用上の意味は特に無い。
[編集] valueOf()
文字列をそのまま返すメソッドであるが、実用上の意味は低い。
[編集] charAt(pos)
ゼロインデックスで位置を指定されたとき、その位置の文字を返す。範囲外の場合は、空白文字を返す。
var str = "abcdefghijklmnopqrstuvwuxyz"; document.write( str.charAt(10) ); // 「k」を返す
[編集] charCodeAt(pos)
指定された位置の文字コードを数字として返す。
var str = "abcdefghijklmnopqrstuvwuxyz"; document.write( str.charCodeAt(10) ); // 「k」の文字コード。「107」が返る
107は、16進法で表した場合は「6b」となるので、次の様に記述すると同じ文字が表示される。
document.write( "\x6b" ); // 「k」を表示する document.write( "\u006b" ); // 「k」を表示する
[編集] concat( [ string1 [ , string2 [ , ... ] ] ] )
文字列の連結を行う。引数は複数指定可能なので、2つ以上の連結が可能である。
var str = "aaaaa"; str = str.concat( "bbbb" ); document.write( str ); // 「aaaabbbb」が表示される str = ""; str.concat( 10000, "年と", 2000, "年前から愛している" );
[編集] String.fromCharCode( [ char0 [ , char1 [ , ... ] ] ] )
指定した番号のUnicode番号を取得する。 32ビットUnicodeには仕様上対応していない。
// 次の2文はいずれも、「a」を返す String.fromCharCode( 0x61 ); String.fromCharCode( 97 );
[編集] indexOf(searchString [, position] )
指定した文字列が何文字目にあるかを検索する。 見つかった場合は、その位置を、見つからなかった場合-1を数字として返す。 文字列の開始位置を変更したければ、第2引数で可能である。
var str = "abrakadabra"; str.indexOf( "ra" ); // raの「r」のインデックスの2が返る str.indexOf( "ra", 3 ); // raの「r」のインデックスの9が返る
そのため、ある文字列を検索したい場合には、次のように記述するのが最も簡潔である。
if( -1 != str.index("検索したい文字列")){
// 見つかった場合の処理
}
[編集] lastIndexOf(searchString [, position] )
指定した文字列が含まれていないかを後ろの方から検索をする。 見つかった場合は、その位置を、見つからなかった場合「-1」を数字として返す。 文字列の開始位置を変更したければ、第2引数で可能である。
var str = "abrakadabra"; str.lastIndexOf( "ra" ); // raの「r」のインデックスの9が返る
[編集] localeCompare(that)
引数で指定された文字との比較を行い結果を数字で返す。 同一の文字列だった場合は0、それ以外の場合には正か負の整数が返る。
[編集] match(regexp)
正規表現のパターンマッチを実行する。 正規表現の詳細に関してはRegExpオブジェクトの項を参照すること。
[編集] replace(searchValue, replaceValue)
第1引数で指定した文字列を、第2引数の文字列に変換する。 第1引数には正規表現を指定することが出来る。
var str = "abrakadabra"; str.replace( "ab", "**" ); // 文字列の置換。「**rakadabra」が返る。 str.replace( /ab/g, "**" ); // 正規表現による全置換。「**rakad**ra」が返る。 str.replace( /a/g, "*" ); // 正規表現による全置換。「*br*k*d*br*」が返る。
[編集] search(regexp)
指定された正規表現とマッチする文字列のインデックスを取得する。
var str = "abrakadabra"; str.serch( "ra" ); // raの「r」のインデックスの2が返る。 str.serch( /ra/ ); // 上の式と同じ
このメソッドはindexOfメソッドと近いが、引数に正規表現を利用することに違いがある。 そのため次の書式の様に正規表現でのワイルドカードを含む書式の場合には問題がおこる。
"obj.toString();".serch(".");
この場合は、文字列「.」のインデックスではなく、正規表現の全ての文字にマッチする「.」として解釈されるため、結果は0文字目でマッチがおこる。
[編集] slice(start, end)
引数で指定した範囲の文字列を返す。
"abcdefghijklmnopqrstuvwuxyz".slice(10,20); // 11文字目の「k」から21文字目の「t」までを返す
[編集] split(separator [, limit] )
第1引数で指定した区切り文字列(または正規表現)で文字列を分割して配列で返す。
var url = "http://ja.wikibooks.org/wiki/JavaScript".replace( "http://", "" ); // まず「http://」を消去 var arr = url.split( "/" ); // 次でこれを [ "ja.wikibooks.org", "wiki", "JavaScript" ]の配列に変換
また、第2引数で、配列の大きさを指定できる。
var arr = url.split( "/", 2 ); // この場合は [ "ja.wikibooks.org", "wiki" ]が返る
区切り文字が無かった場合は、与えられた文字列のみの、長さ1の配列が返る。
[編集] substring(start, end)
引数で指定した区間の文字列を切り出して返す
str.substring(0, 10); // テキストの最初から10文字目までの文字列を返す str.substring(10, str.length); // テキストの10文字目から最後までを返す
[編集] toLowerCase()
文字列を小文字に変換します。
[編集] toLocaleLowerCase()
文字列を小文字に変換する。toLowerCaseとは、トルコ語等の一部の言語環境以外では違いは出ない。
トルコ語の場合は、アルファベットの文字の対応関係に違いがあり「I」の文字が次の様に対応している。
| 大文字 | 小文字 |
|---|---|
| I | ı |
| İ | i |
この様に、「I」は点のないıと対応しており、点の付くiとは区別される。
ただし日本語環境の場合は、どちらも小文字の「i」を返す仕様のため、toLowerCaseとtoLocaleLowerCaseの違いは存在しない。
[編集] toUpperCase()
文字列を大文字に変換します。
[編集] toLocaleUpperCase()
文字列を小文字に変換する。toLocaleUpperCaseとは、トルコ語等の一部の言語環境以外では違いは出ない。