2014年9月22日月曜日

禁則文字列を除く~javascript


とりあえず”:”だけに対応するスクリプトだったが、他の禁則文字にも対応できるよういじってる

まず禁則文字を配列に格納するところからだけど、Cだと
kin[] = { ":" , "?" , "(" }
こんなふうに書くのありだけど、jsだと駄目なんだね
kin = [ ":", "\\|","!","\\?","\\/" , "\\(" , "\\)" , "\\\\" ];
似てるけどこんな書き方になるらしい

禁則文字の除き方だけど、最初のスクリプトは、
①禁則文字を検索
②見つかったらsubstringメソドで前と後ろに切り分けてからつなぐ
ということをやってたんだが、ナント!!!
javascript の文字列にはreplaceメソドってのがあって、一発で置換できる!!
しかも全て置換にすれば一発なので、ループでまわす必要もなし!
便利すぎる・・・

しかし、普通にreplaceなら
obj.replace( "hoge" , "ho") ;
って感じで良いんだけど、全て置換にするときは正規表現で置換対象文字列を書かなくちゃいけなくてこれが結構面倒だった
しかも配列の文字列変数を正規表現化する必要あり
reg= new RegExp( kin[n] , "g" );
って感じ、"g"はオプションで全て対象って意味

あと、そもそも禁則文字を配列に格納するのも一苦労
"|" は "\\|" 、"\" がさらに面倒で "\\\\" になります
本来「|」は「\|」でいいんだが、javascriptのテキストファイル内に書く場合は\一個だと消えるので\\にする(んだと思う)

結構イロイロ調べました
勉強になったというか、javascript良いです!
動かした感じも今まで使ってたwinbatchEhよりスムーズ
正規表現に関しては、rubyの方が簡単らしいけど、まあいい、javascriptはすごくCに近い感じで、なんというか、システムに近く感じる
直接win32apiにアクセスしてる感があって、気分良いです

0 件のコメント:

コメントを投稿