特定文字列関して処理No.09183
SunSolaris さん 20/03/11 16:47
 
 恐れ入りますが、1列中に存在する場合特定文字列を処理をしたいのですが?

(例)
(処理前)
(混合)定量
(処理後)
(混合),定量

 golinetop;  ///行の先頭に移動

 while( code != eof ){
//ファイルの終わりまで以下の処理実行します
   
   searchdown "(混合)定量" , hilight;
   //文字列"(混合)定量"検索
 if(result == true){
//文字列"(混合)定量"の有り無し判断
    right 4;  //カーソル右移動(移動数
    insert "\t";  //文字列","の挿入

     }
else{
 break; //whileループを抜ける
 }
     }

上記の処理で特定文字列で上手く処理できる文字列と処理できない文字列が有るので
すが原因が解りません御教授を御願い致します。


[ ]
RE:09183 特定文字列関して処理No.09184
でるもんたいいじま さん 20/03/11 17:59
 
こんにちは。秀丸愛用者の「でるもんた・いいじま」と申します。

>  恐れ入りますが、1列中に存在する場合特定文字列を処理をしたいのですが?
(中略)
> 上記の処理で特定文字列で上手く処理できる文字列と処理できない
> 文字列が有るのですが原因が解りません御教授を御願い致します。

うーむ。どういう場合に処理できて、どういう場合に処理できないのか、そしてコー
ドの全文はどうなっているのか、が分からないと、誰も何もお答えできないと思いま
す。

ちなみに、以前のご質問でも指摘されていたかと思いますが、こういう文字列処理で
は、 right→insert をループするのは一般論として【動作が遅い】【コーディング
に手間がかかる=バグの温床になる】という意味で大悪手です。正規表現が使える環
境では絶対に正規表現を使うべきです。

具体的には、この例題
> (例)
> (処理前)
> (混合)定量
> (処理後)
> (混合),定量
なら、
setcompatiblemode 0x20000;
replaceall @"\(混合\)定量", "(混合)\t定量", regular;
の2行だけで終わりです。

混合・定量以外にも色々とキーワードがあると思いますが、数十個程度の実例を列挙
していただければ、私かどなたかが正規表現の雛型を書けると思います。

今後も同様の事態は頻繁に出てくると思いますので、この機会に正規表現そのものに
ついての勉強にしっかり着手することをおすすめしたいです。
https://www.amazon.co.jp/s?k=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE&i=stripbooks

[ ]
RE:09184 特定文字列関して処理No.09185
でるもんたいいじま さん 20/03/11 19:33
 
追記。

> 今後も同様の事態は頻繁に出てくると思いますので、この機会に
> 正規表現そのものについての勉強にしっかり着手することをおすすめしたいです。
> https://www.amazon.co.jp/s?k=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE&i=stripbooks

Sunolarisさんの日本語の書き方の癖から判断するに、失礼ながらSunSolarisさんは
韓国ご出身の方でしょうか?もしその通りでしたら、まずはこちらからどうぞ:
https://www.google.com/search?q=%EC%A0%95%EA%B7%9C%EC%8B%9D+%EC%9E%85%EB%AC%B8

Regular expressionは日本語では「正規表現」が定訳ですが、韓国語では「正規式」
が一般的なようです。

[ ]