11. String(1)
JavaScript でも JScript と同じように、いつのまにか(たぶん、Ver.1.3から)
Unicode で文字数を数えるようになったようです。
alert("ほえ".length); //2
JavaScript では以前は半角で数えて 4 と返ってきたと思いますが、
2 と返ってくるようになりました。
これに伴って、
charAt とか
substring といった文字列の長さに関連するメソッドは
すべて仕様変更になったはずです。
charAt は String
オブジェクトの指定した位置の文字を返しますが、
charCodeAt はその文字の Unicode を返します。
alert("A".charCodeAt(0)); //65
alert("ほえ".charCodeAt(1)); //12360("え"のUnicode)
JavaScript1.2 では半角で数えて 0〜255 を返していましたが、
JavaScript1.3 で Unicode を返すようになりました。
charCodeAt メソッドとは逆に、
Unicode から文字列を返します。
alert(String.fromCharCode(65)); //"A"
alert(String.fromCharCode(12411, 12360)); //"ほえ"
JavaScript1.2 では半角コードで 0〜255 を引数にしていました。
文字列の連結を行います。
str1.concat(str2, str3, ... , strn);
は、
str1 + str2 + str3 + ... + strn
と同等なのであまり意味はない?
var str1 = "ほえ";
var str2 = "ほえ";
var str3 = "ハッピー";
//"ほえほえ" str1 + str2と同等
alert(str1.concat(str2));
//"ほえほえハッピー" str1 + str2 + str3と同等
alert(str1.concat(str2, str3));
alert(str1); //"ほえ"
concat メソッドは対象のオブジェクトに影響を与えません。
文字列の一部を返すメソッドです。
stringObj.slice(start[, end])
stringObj の
start と
end
で表される部分を切り出して返します。
start は先頭から、
end は最後からの位置です。
end は一つ前が -1、その前が -2 となります。0 はとりません。
end を省略すると最後まで返ります。
var str = "01234567";
alert(str.slice(3)); //"34567"
alert(str.slice(3, -2)); //"345"
文字列の一部を返すメソッドです。
stringObj.substr(start[, length])
stringObj の
start から
length
分を切り出して返します。
Perl と同じです。
var str = "01234567";
alert(str.substr(2, 3)); //"234"
alert(str.substr(2)); //"234567"
alert(str.substr(2, 7)); //"234567"