文字列(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)

stringn 番目(最初の文字を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)

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

"ABCDEFG".substring(2, 4);    // "CD" を返す
string.slice(from [, to]) (e4/N4)

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

"ABCDEFG".slice(2, 4);    // "CD" を返す
"ABCDEFG".slice(2);       // "CDEFG" を返す
string.substr(from [, len]) (e4/N4)

stringfrom 番目から len 文字分(最初の文字を 0 番目とする)の文字列を返します。from に負の値を指定すると後ろから数えます(IE6は未対応)。len を省略すると残りのすべてを返します。

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

文字列の分割と連結

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

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

a = "23:59:59".split(":");
document.write(a[0] + "時" + a[1] + "分" + a[2] + "秒");
string.concat(string2) (e4/N4)

stringstring2 を連結した物を返します。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)

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

xx = "ABCABC".indexOf("C");       // 2を返す
xx = "ABCABC".indexOf("C", 3);    // 5を返す
string.lastIndexOf(key [, from]) (e3/N2)

stringfrom 番目(最初の文字を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)

stringn 番目(最初の文字を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-2006 杜甫々
改訂版初版:2006年11月12日
http://www.tohoho-web.com/js/string.htm