JavaScriptでは、文字列をダブルクォーテーション(")またはシングルクォーテーション(')で囲んで表現します。
xx = "ABCDEFG"; yy = 'ABCDEFG';
文字列の中では、バックスラッシュ(\)に続く 1 文字は特別な意味を持ちます。これらの文字をエスケープ文字と呼びます。
\n - ニューライン(改行文字) \f - フォームフィード \b - バックスペース \r - キャリッジリターン(復帰文字) \t - タブ文字 \' - シングルクォート(') \" - ダブルクォート(") \\ - バックスラッシュ(\) \nnn - 8進数による文字コード指定(例えば "A" は "\101") \xnn - 16進数による文字コード指定(例えば "A" は "\x41") \unnnn - Unicode文字(例えば "あ" は "\u3042")
例えば、alert() によるダイアログ中でメッセージを改行するには、次のようにします。
alert("ざんねんでした。\nまたきてね。");
ダブルクォート(")の中でダブルクォート(")を使用することはできません。シングルクォート(')の中のシングルクォート(')も同様です。
str = "ダブルクォートは " です。"; ← error!! str = 'シングルクォートは ' です。'; ← error!!
どうしても使用したい場合は、"..." の中でシングルクォート(')を使うか、'...' の中でダブルクォート(")を使うか、\" や \' を使います。
str = "シングルクォートは ' です。"; str = 'ダブルクォートは " です。'; str = "ダブルクォート \" で、シングルクォートは \' です。";
文字列オブジェクトを生成します。ビルトイン関数の String() とは別物です。「すべての型をオブジェクトタイプとして実装する」というポリシーで用意されていますが、あまり使用されることはありません。
xx = new String("ABC");
文字列の長さを求めます。
str = "あいうえお"; alert("これは" + str.length + "文字です。");
ただし、length プロパティは、文字列の中に日本語(2バイト文字)を含んだ場合、古いブラウザでは日本語 1 文字を 2 と数えますが、Internet Explorer 4.0 以降、Netscape Communicator 4.06(XXX)以降では日本語 1 文字を 1 と数えるので注意が必要です。日本語を 2 として数えるには次のような関数を用いてください。
function jstrlen(str, len, i) { len = 0; str = escape(str); for (i = 0; i < str.length; i++, len++) { if (str.charAt(i) == "%") { if (str.charAt(++i) == "u") { i += 3; len++; } i++; } } return len; }
string の n 番目(最初の文字を0番目とする)の文字を返します。Internet Explorer 3.0 や Netscape Communicator は日本語1文字を 2、Internet Explorer 4.0 以降は日本語1文字を 1 として数えるので注意が必要です。
str = "ABCDEFG"; for (i = 0; i < str.length; i++) { document.write("[" + str.charAt(i) + "]"); }
string の from〜to - 1 文字目(最初の文字を 0 番とする)の文字列を返します。負の値を指定すると 0 番目と見なされます。to を省略すると残りのすべてを返します。
"ABCDEFG".substring(2, 4); // "CD" を返す
string の from〜to - 1 文字目(最初の文字を 0 番目とする)の文字列を返します。負の値を指定すると後ろから数える点が substring() と異なります。to を省略すると残りのすべてを返します。
"ABCDEFG".slice(2, 4); // "CD" を返す "ABCDEFG".slice(2); // "CDEFG" を返す
string の from 番目から len 文字分(最初の文字を 0 番目とする)の文字列を返します。from に負の値を指定すると後ろから数えます(IE6は未対応)。len を省略すると残りのすべてを返します。
"ABCDEFG".substr(2, 4); // "CDEF" を返す
string を sep を区切り文字として分割し、その配列を返します。limit は配列の個数を制限します。sep を省略すると string 全体を唯一の要素とする配列を返します。
a = "23:59:59".split(":"); document.write(a[0] + "時" + a[1] + "分" + a[2] + "秒");
string に string2 を連結した物を返します。string + string2 と同義。
xx = "ABC".concat("DEF"); // xx = "ABC" + "DEF"; と同じ
string の内、regexp にマッチする部分を newString に置き換えたものを返します。Netscape Communicator の JavaScript1.3 では newString の部分に関数を指定することができます。マッチングの規則については「正規表現」を参照してください。
xx1 = "This is a pen.".replace("pen", "book"); xx2 = "AB".replace("(.)(.)", function(str, p1, p2) { return(p2 + p1); });
string を大文字・小文字に変換した文字列を返します。
xx1 = "Abc".toUpperCase(); // "ABC" を返す xx2 = "Abc".toLowerCase(); // "abc" を返す
string の from 番目(最初の文字を0番目とする)から後方に検索し、最初に key が現れる位置(string の最初の文字を0番目とする)を、見つからない場合は -1 を返します。
xx = "ABCABC".indexOf("C"); // 2を返す xx = "ABCABC".indexOf("C", 3); // 5を返す
string の from 番目(最初の文字を0番目とする)から前方に、最初に key が現れる位置(string の最初の文字を0番目とする)を、見つからない場合は -1 を返します。
fileName = "xxx.gif"; if ((n = fileName.lastIndexOf(".")) != -1) { ext = fileName.substring(n); }
正規表現 regexp に最初にマッチした部分の文字列を返します。マッチしなかった時は空文字ではなく、null という特殊な値を返します。マッチングについては「正規表現」を参照してください。
if ("ABCDEFG".match(/def/i)) { alert("Match"); }
string から regexp にマッチする部分の位置を返します。見つからなければ -1 を返します。マッチングについては「正規表現」を参照してください。
if ("ABCDEFG".search(/def/i) != -1) { alert("Match"); }
string の n 番目(最初の文字を0番目とする)の文字のコードを返します。ブラウザの種類やバージョンによって文字数の数え方や、文字コードの扱いが異なるので注意が必要です。例えば以下の例(コードはシフトJISと仮定)で、Netscape Communicator 4.01 では "あ" のシフトJISコードの1バイト目 "\x82" を示す -126 を返しますが、Internet Explorer 4.0 や Netscape Communicator 4.06 以降では Unicode の "\u3042" を示す 12354 を返します。
c1 = "ABC".charCodeAt(0); // "A"のASCII文字コード65を返す c2 = "あ".charCodeAt(0); // ブラウザによって動作が異なる
文字コード num1, ..., numN で表される文字列を返します。
str = String.fromCharCode(0x41, 0x42, 0x43); alert(str); // "ABC" が表示される
それぞれ、string で指定した文字列を <b>、<i>、<tt>、<big>、<small>、<blink>、<strike>、<sup>、<sub>、<font color=color>、<font size=size>、<a name=name>、<a href=name> の開始タグ、終了タグで囲んだ文字列を返します。例えば、"ABC".bold() は "<b>ABC</b>" を返します。
document.write("太字".bold()); document.write("斜体".italics()); document.write("固定幅フォント".fixed()); document.write("大きなフォント".big()); document.write("小さなフォント".small()); document.write("ブリンク".blink()); document.write("打ち消し線".strike()); document.write("上付き".sup()); document.write("下付き".sub()); document.write("赤い文字".fontcolor("red")); document.write("フォントサイズ7の文字".fontsize(7)); document.write("アンカー".anchor("xxx")); document.write("リンク".link("index.html"));