1つだけ過去を変えられるとしたら?

str=new String("教えてgoo");
s=str.length;

このようにすると、「s」の中には「6」という数字が代入されるのですが、
全角を2文字として計算するにはどうすればいいのでしょうか。
「s」の中には「9」が入るようにしたいんです。

よろしくお願いします。

A 回答 (2件)

String.prototype.mlength=function(){


var len=0;
for(var i=0;i<this.length;i++){
var code=this.charCodeAt(i);
if(code>255) len++;
len++
}
return len;
}

var str=new String("教えてgoo");
var s=str.length;
alert(s); //6
var sm=str.mlength();
alert(sm);//9
    • good
    • 0
この回答へのお礼

わかりやすく説明してくれて助かりました。
ありがとうございました。

お礼日時:2005/12/30 08:40

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;
}

参考URL:http://www.tohoho-web.com/js/string.htm
    • good
    • 0
この回答へのお礼

早い応答に感謝です、
ありがとうございました。

お礼日時:2005/12/30 08:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報