2009年5月19日火曜日

JavaScript 文字列の途中改行

バックスラッシュか配列にしてjoinしちゃう

PHPSPOT これは必見!JavaScriptの文字列を複数行で定義する方法

var string = 'a \
b \
c'
//または
var string = [
 'a',
 'b',
 'c'].join('')

逆に文字列を一文字毎配列にする

404 Blog Not Found javascript - 基数変換

var string = 'abcedefghijklmnopqrstuvwxyz'.split('')

これはパスワードをランダムで作成する時とかにも使えます。string[0] = 'a'なんてやるのは大変乙な話です。

2009年5月7日木曜日

JavaScriptで文字列のバイト数を求める

Stringを拡張してみた

これがGoodパーツなのかBadパーツなのかは用途次第ということにさせて下さいw

(function(){
if(String.prototype.utf8byte) return;

String.prototype.utf8byte = function(){
 return(encodeURIComponent(this).match(/(\w|%[0-9A-F][0-9A-F])/ig).length)
}
})()

//使い方
alert('aiu'.utf8byte()) //3
alert('あいう'.utf8byte()) //9
alert('草𦿶'.utf8byte()) // 7

バグはあると思われ

適当な正規表現でやってるので(正規表現書くなとか言われそう...)ちゃんとテストコード書いてテストしないといけないですね。JSUnitだっけ...

JavaScriptのencodeURIComponentがUTF-8でやるのかはちゃんと調べてませんが、UTF-8の場合日本語は3〜4バイトになるので、最近追加された漢字で偶然あの人の名前から拝借したところ4バイトのがありましたので、たぶんUTF-8なんだと思います。

用途

例えばデータベースのvarcharなど、バイト数が制限されるところで使えると思います。

独り言

会社で他のプロジェクトでも使えるようなJavaScriptライブラリを作ろうと計画しているのですが(個人的に)、会社で書かずに家で書いてgithubとかに上げて、他の人にも使ってもらえるようにした方がいいかなぁと思ってます。バグ報告とかw 人柱とかw 確かに本尾企業でもすごく優秀な軽量ライブラリを公開してるところがあったなぁ。JavaScriptって結局はソースを公開しちゃうんでライブラリの管理を一元化しちゃった方がいいのかもしれないですね。jQueryプラグインはそこそこ管理されてていいですね。Google Code、 Github、Code::Reposといろいろ選択肢があるのは嬉しいけど、そういったのを統括して検索したりできるサイトがあると便利かな。