split関数で1文字単位で分割するにはNo.09186
かずらい さん 20/03/12 00:17
 
題名の通りで、1文字単位で分割できないでしょうか?

下記マクロのような大文字/小文字の変換やアトバシュ/シーザー暗号などに使いたい
です。

よろしくお願いいたします。

$str = "hoge";
$str変数を1文字単位で分割
#n = 0;
#i = wcslen($str);
while (#i > 0) {
 if (65 <= ascii($arr[#n]) && ascii($arr[#n]) <= 90) {
  $tStr = char(ascii($arr[#n]) + 32);
 } else if (97 <= ascii($arr[#n]) && ascii($arr[#n]) <= 122) {
  $tStr = char(ascii($arr[#n]) - 32);
 } else {
  $tStr = $arr[#n];
 }
 $nStr = $nStr + $tStr;
 #n = #n + 1;
 #i = #i - 1;
}
message $nStr;

[ ]
RE:09186 split関数で1文字単位で分割するNo.09187
秀丸担当 さん 20/03/12 13:39
 

文字列を一文字単位で見るには、midstr関数を使うとできます。
midstrは全角の場合に半分に分かれてしまうので、wcsmidstrのほうがいい場合があ
ります。

$str="abc";
$arr[0]=wcsmidstr($str,0,1);
$arr[1]=wcsmidstr($str,1,1);
$arr[2]=wcsmidstr($str,2,1);
message $arr[0]+"\n"+
  $arr[1]+"\n"+
  $arr[2]+"\n";

splitは一般的には""で一文字単位にできるようで、秀丸エディタのsplit関数は対応
していませんでした。
今後のバージョンで対応したいと思います。

[ ]
RE:09187 split関数で1文字単位で分割するNo.09188
かずらい さん 20/03/12 18:20
 
秀丸担当 様

ご回答ありがとうございました。
やっぱりスクリプトは使い方考え方が大事ですね。
split関数でのご対応もお待ちしております。

[ ]
RE:09187 split関数で1文字単位で分割するNo.09191
かずらい さん 20/03/22 17:53
 
サイトー企画 様

早々のご対応ありがとうございました。m(_ _)m

早速使わせていただきます。

[ ]