• ベストアンサー

半角と全角の文字数について

str=new String("教えてgoo"); s=str.length; このようにすると、「s」の中には「6」という数字が代入されるのですが、 全角を2文字として計算するにはどうすればいいのでしょうか。 「s」の中には「9」が入るようにしたいんです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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

is_may
質問者

お礼

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

その他の回答 (1)

回答No.1

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
is_may
質問者

お礼

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

関連するQ&A