## 文字列（String）

[up] [prev] [next]

#### ■ 一覧

anchor(), big(), blink(), bold(), charAt(), charCodeAt(), concat(), fixed(), fontcolor(), fontsize(), fromCharCode(), indexOf(), italics(), lastIndexOf(), length, link(), match(), replace(), search(), slice(), small(), split(), strike(), String(), sub(), substr(), substring(), sup(), toLowerCase(), toUpperCase()

#### ■ 文字列

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 = new String(string) (e4/N3)

文字列オブジェクトを生成します。ビルトイン関数の String() とは別物です。「すべての型をオブジェクトタイプとして実装する」というポリシーで用意されていますが、あまり使用されることはありません。

    xx = new String("ABC");

#### ■ 文字列の長さ

◆ string.length (e3/N2)

文字列の長さを求めます。

    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.charAt(n) (e3/N2)

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.substring(from `[, to]`) (e3/N2)

string の from〜to - 1 文字目（最初の文字を 0 番とする）の文字列を返します。負の値を指定すると 0 番目と見なされます。to を省略すると残りのすべてを返します。

    "ABCDEFG".substring(2, 4);    // "CD" を返す

◆ string.slice(from `[, to]`) (e4/N4)

string の from〜to - 1 文字目（最初の文字を 0 番目とする）の文字列を返します。負の値を指定すると後ろから数える点が substring() と異なります。to を省略すると残りのすべてを返します。

    "ABCDEFG".slice(2, 4);    // "CD" を返す
    "ABCDEFG".slice(2);       // "CDEFG" を返す

◆ string.substr(from `[, len]`) (e4/N4)

string の from 番目から len 文字分（最初の文字を 0 番目とする）の文字列を返します。from に負の値を指定すると後ろから数える。len を省略すると残りのすべてを返します。

    "ABCDEFG".substr(2, 4);    // "CDEF" を返す

#### ■ 文字列の分割と連結

◆ string.split(`[sep `[, limit]`]`) (e4/N3)

string を sep を区切り文字として分割し、その配列を返します。limit は配列の個数を制限します。sep を省略すると string 全体を唯一の要素とする配列を返します。

    a = "23:59:59".split(":");
    document.write(a[0] + "時" + a[1] + "分" + a[2] + "秒");

◆ string.concat(string2) (e4/N4)

string に string2 を連結した物を返します。string + string2 と同義。

    xx = "ABC".concat("DEF"); // xx = "ABC" + "DEF"; と同じ

#### ■ 文字列の置換

◆ string.replace(regexp, newString) (e4/N4)

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.toUpperCase() (e3/N2)
◆ string.toLowerCase() (e3/N2)

string を大文字・小文字に変換した文字列を返します。

    xx1 = "Abc".toUpperCase(); // "ABC" を返す
    xx2 = "Abc".toLowerCase(); // "abc" を返す

#### ■ 文字列の検索

◆ string.indexOf(key `[, from]`) (e3/N2)

string の from 番目（最初の文字を0番目とする）から後方に検索し、最初に key が現れる位置（string の最初の文字を0番目とする）を、見つからない場合は -1 を返します。

    xx = "ABCABC".indexOf("C");       // 2を返す
    xx = "ABCABC".indexOf("C", 3);    // 5を返す

◆ string.lastIndexOf(key `[, from]`) (e3/N2)

string の from 番目（最初の文字を0番目とする）から前方に、最初に key が現れる位置（string の最初の文字を0番目とする）を、見つからない場合は -1 を返します。

    fileName = "xxx.gif";
    if ((n = fileName.lastIndexOf(".")) != -1) {
        ext = fileName.substring(n);
    }

#### ■ 文字列のマッチング

◆ string.match(regexp) (e4/N4)

正規表現 regexp に最初にマッチした部分の文字列を返します。マッチしなかった時は空文字ではなく、null という特殊な値を返します。マッチングについては「正規表現」を参照してください。

    if ("ABCDEFG".match(/def/i)) {
        alert("Match");
    }

◆ string.search(regexp) (e4/N4)

string から regexp にマッチする部分の位置を返します。見つからなければ -1 を返します。マッチングについては「正規表現」を参照してください。

    if ("ABCDEFG".search(/def/i) != -1) {
        alert("Match");
    }

#### ■ 文字と文字コードの変換

◆ string.charCodeAt(n) (e4/N4)

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);  // ブラウザによって動作が異なる

◆ String.fromCharCode(num1, ..., numN) (e4/N4)

文字コード num1, ..., numN で表される文字列を返します。

    str = String.fromCharCode(0x41, 0x42, 0x43);
    alert(str);   // "ABC" が表示される

#### ■ 文字列のタグつけ

◆ string.bold() (e3/N2)
◆ string.italics() (e3/N2)
◆ string.fixed() (e3/N2)
◆ string.big() (e3/N2)
◆ string.small() (e3/N2)
◆ string.blink() (e3/N2)
◆ string.strike() (e3/N2)
◆ string.sup() (e3/N2)
◆ string.sub() (e3/N2)
◆ string.fontcolor(color) (e3/N2)
◆ string.fontsize(size) (e3/N2)
◆ string.anchor(name) (e3/N2)
◆ string.link(name) (e3/N2)

それぞれ、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"));

[up] [prev] [next]
Copyright (C) 1996-2001 杜甫々
改訂版初版：2001年5月20日
http://www.tohoho-web.com/js/string.htm