半角カナ -> 全角カナNo.03752
ichiro さん 99/07/23 16:51
 
半角カナを全角カナへ置換したいのです。
ブラケットを使って検索するところまでは、
ヘルプを見て出来たのですが、置換の仕方
が分かりません。
初歩的な質問かもしれませんが、よろしく
お願いいたします。
ちなみに秀丸のバージョンは3.01です。

[ ]
RE:03752 半角カナ -> 全角カナNo.03755
KITA さん 99/07/23 17:36
 
>半角カナを全角カナへ置換したいのです。

文字列を選択したら右クリックでメニューが出ないかな?
 (初めから登録してあったかどうか忘れました・・・)

出ない場合は文字列を選択後に、
その他 - コマンド一覧 - その他編集 - 全角カタカナに変換 です。

その他 - ユーザーメニュー編集 で、
「選択中右ボタン」 メニューに必要なものを追加しておくと便利です。

[ ]
RE:03755 半角カナ -> 全角カナNo.03757
ichiro さん 99/07/23 18:28
 
KITAさん、ありがとうございました。
キーに割り当てて、検索と組み合わせると
かなり効率的です。
しかしながら、長いファイル全体にわたっ
て置換するのは大変です。
ぜいたくかもしれませんが、一気に置換す
る方法はないでしょうか。

[ ]
RE:03757 自己レス?No.03758
ichiro さん 99/07/23 18:59
 
全て選択すればいいのでは!と一瞬喜びましたが、
だめですね。ひらがなまでカタカナにナッテシマイ
マス。

[ ]
RE:03755 半角カナ->No.03759
きいろいまふらあ さん 99/07/23 18:59
 
きいろいまふらあです

>>半角カナを全角カナへ置換したいのです。
>文字列を選択したら右クリックでメニューが出ないかな?

半角カナ「だけ」全角にしたいのでは?
そんなマクロがどこかにあったような気がします。

手段としては、
ひたすら対応する置換を1文字ずつ(50音+濁音、半濁音)やる
というのと、
検索でヒットした連続する半角カタカナを範囲選択してから、
tozenkakuコマンドを実行する
という2つの方法があると思います。

マクロ使わずに、というのは現状できないと思います。
#現実的な方法では。

まふ

[ ]
RE:03759 半角カナ->No.03760
Micky さん 99/07/23 19:19
 


きいろいまふらあ wrote:
> 半角カナ「だけ」全角にしたいのでは?

> マクロ使わずに、というのは現状できないと思います。
秀丸とは関係ないのですが、ファイルの変換でしたら
nkf32
というツールで可能です。
nkf32 test.txt > aaa.txt
こんな感じで変換できました。
濁点,半濁点も1文字に変換されました。(「カ゛」ではなく「ガ」になる。)

どこから入手したのか忘れましたが、フリーソフトのようです。

[ ]
RE:03760 半角カナ->No.03761
きいろいまふらあ さん 99/07/23 20:52
 
きいろいまふらあです。

>秀丸とは関係ないのですが、ファイルの変換でしたら
>nkf32
>というツールで可能です。

これって漢字コード変換のフィルタプログラムの「nkf」なのでしょうか?
#同名異プログラムか?

>濁点,半濁点も1文字に変換されました。(「カ゛」ではなく「ガ」になる。)

デフォルトで変換されちゃうんでしょうか?

まふ

----
Go TAKAGI  xxxx@pluto.dti.ne.jp

[ ]
RE:03761 半角カナ->No.03762
Micky さん 99/07/23 21:09
 
きいろいまふらあ wrote:
> >秀丸とは関係ないのですが、ファイルの変換でしたら
> >nkf32
> >というツールで可能です。
>
> これって漢字コード変換のフィルタプログラムの「nkf」なのでしょうか?
> #同名異プログラムか?
まったく同じかどうかわかりませんが、元々の目的は「
漢字コード変換のフィルタプログラム」です。
多分同じ物でしょう。

> >濁点,半濁点も1文字に変換されました。(「カ゛」ではなく「ガ」になる。)
>
> デフォルトで変換されちゃうんでしょうか?
何も考えずに(パラメータを指定せずに)変換(といってもテストしたのは
s-jis→s-jisですが、)すると「半角かな」は「全角カタカナ」に
なりました。
パラメータは試していないので変換しないモードもあるかもしれません。

[ ]
RE:03760 半角カナ->No.03764
大森鉄工所 さん 99/07/23 22:58
 
>どこから入手したのか忘れましたが、フリーソフトのようです。
・nkf32.exe 市川 至 <xxxxxxxx@flab.fujitsu.co.jp>
http://ring.asahi-net.or.jp/pub/pack/win95/util/text/conv/code/nkf3217.lzh
   
ver.1.62と 1.7では使い方が少し違って、出力の標準が iso-2022-jpとなりました。
編集(E) → すべてを選択(S) → その他(O) → プログラム実行(X)
nkf32 -s <con >con でうまく行くかもしれません。

それとは別に、マクロでするならこんな感じです。
conv_1bkana_2:
    title "■ 1byteカナ置き換え ■";
    gofiletop;
    insertline;
    #n = 0;
    while( 1 ){
        searchdown "[\xA1-\xDF]", regular;
        if( ! result ) break;
        #x = x; #y = y; #n = #n + 1;
        searchdown "[^\xA1-\xDF]", regular;
        if( ! result ) golineend2;
        beginsel;
        moveto #x, #y;
        tozenkakukata;
        escape;
    }
    if( 0 < #n ){
        gofiletop;
        deleteline;
    } else {
        undo;
    }
    title 0;
    beep;

[ ]
RE:03758 自己レス?No.03765
安久津 さん 99/07/23 23:03
 
こんにちは ichiro さん、安久津といいます。

>全て選択すればいいのでは!と一瞬喜びましたが、
>だめですね。ひらがなまでカタカナにナッテシマイ
>マス。
>

私が普段使っているマクロです。# ちょっと親切に修正版
/////han2zen.mac
/////選択範囲にある半角カタカナを全角カタカナに変換する
/////hankakuKata2zenkakuKata:

##cx = x; ##cy = y;
if( selecting ){
if( (seltopx + selendx) != 0 ){
menu "カーソルを行頭に置いて、","Shift + ↓ 又 Shift + ↑",
"で選択して下さい。", "&N バイバイ";
endmacro;
}
disabledraw;
}else{
disabledraw;
selectall;
if( (seltopx + selendx) != 0 ){
escape; gofileend;
enabledraw;
menu "残念、このファイルは[EOF]直前に改行が無いです","&N バイバイ";
endmacro;
}
}
##seltopy = seltopy; ##selendy = selendy;
title "半角カタカナを全角カタカナへ";
escape;
moveto 0, ##selendy; ##selendy = lineno - 1;
moveto 0, ##seltopy;

searchdown "[\\xA1-\\xDF]+", regular;
while( result ){
if( lineno > ##selendy ) break;
tozenkakukata; escape;
finddown;
}
escape;
moveto ##cx, ##cy;
title 0;
endmacro;
/////return;
/////end hankakuKata2zenkakuKata

ではでは。
# 中日首位折り返し祝い!

[ ]
RE:03765 自己レス?No.03766
安久津 さん 99/07/23 23:35
 
安久津です。
大森鉄工所さんのソースを見て思い出した。
選択範囲の一番最初の行頭に、半角カタカナがあると
その一文字だけ変換できないぞ。

ではでは。
# 親切版 だったのに。(^^;

[ ]
RE:03766 自己レス?No.03768
安久津 さん 99/07/24 03:20
 
さんたび安久津です。

##cx = x; ##cy = y;
if( selecting ){
if( (seltopx + selendx) != 0 ){
menu "カーソルを行頭に置いて、","Shift + ↓ 又 Shift + ↑",
"で選択して下さい。", "&N バイバイ";
endmacro;
}
disabledraw;
}else{
disabledraw;
selectall;
if( (seltopx + selendx) != 0 ){
escape; gofileend;
enabledraw;
menu "残念、このファイルは[EOF]直前に改行が無いです","&N バイバイ";
endmacro;
}
}
##seltopy = seltopy; ##selendy = selendy;
title "半角カタカナを全角カタカナへ";
escape;
moveto 0, ##selendy; ##selendy = lineno;
moveto 0, ##seltopy;
insertfix "\n";
searchdown "[\\xA1-\\xDF]+", regular;
while( result ){
if( lineno > ##selendy ) break;
tozenkakukata; escape;
finddown;
}
escape;
moveto 0, ##seltopy; delete;
moveto ##cx, ##cy;
title 0; beep; // 最後っ屁
endmacro;

ではでは。
# 自己レスの自己レスになってしまった。(^^;

[ ]
RE:03759 半角カナ->No.03769
ひろ さん 99/07/24 10:17
 
 ichiro さん、きいろいまふらあさん今日は、ひろです。
> 半角カナ「だけ」全角にしたいのでは?
> そんなマクロがどこかにあったような気がします。
 ありましたよね。何処かに登録してあったと思うのですが、掲載場所が見
つからない(^^)。取り敢えず、
//---------------------- HanKata2zen.mac ----------------------------
main:
  #count = 0;
  disabledraw;
  #orgx=x;
  #orgy=y;
  call save_search;
  gofiletop;
  call sear_hankaku;
  call reset_search;
  moveto   #orgx,#orgy;
  endmacro;

save_search://*******検索状態を保存
  #reg_search=getininum("hidemaru.ini","Env","SelectFound");
  if(!#reg_search){
    writeininum "hidemaru.ini","Env","SelectFound",1;
    envchanged;
  }$search=searchbuffer;
  #search=searchoption;
  return;

reset_search://******検索を初期状態に戻す
  if(!#reg_search){
    writeininum "hidemaru.ini","Env","SelectFound",#reg_search;
    envchanged;
  }setsearch $search, #search;
  return;

sear_hankaku:
  searchdown "[。-゚]+",regular;
  while(result){
    call han2zen;
    #count = #count + 1;
    finddown;
  }findup;
  if(result)call han2zen;
  return;

han2zen:
  tozenkakukata;
  escape;
  return;
//-------------------- end macro ------------------------------------
で如何でしょう。

[ ]
RE:03769 半角カナ->No.03771
安久津 さん 99/07/24 13:58
 
こんにちはひろさん、安久津です。

>}// End of while( result )
>findup; //<- ●[1]
>if(result)call han2zen;
>return;

●[1]の findup はまずいです。

最先頭に「グラフィックス」という半角カタカナがあったとします。
最初の while( result ) のループで次のように変換されます。

ク゛ラフィックス

んで、●[1]の findup で次のように変換されます。

ク゛ラフィックス

結局「グラフィックス」にならないんです。( 固定ピッチで見てね )
一般的に、searchdown 欠点回避の最後の findup はだめみたいです。
# ひろさんのマクロの中にしばしば見つけるので、おせっかいしました。m(__)m

# searchdown "[。-゜]+",regular; は 0xA1 0xDF でないです。
# 0x8142 0x814B の全角になっています。
# たぶんメーラーの自動変換ではないでしょうか?

ではでは。
# 半角カタカナ送信できていますか?

[ ]
RE:03771 半角カナ->No.03772
安久津 さん 99/07/24 14:19
 
安久津です。

># 半角カタカナ送信できていますか?
ダメじゃん。(^^;
# OE4 が勝手に変換しました。

最先頭に「\xB8\xDE\xD7\xCC\xA8\xAF\xB8\xBD」という
半角カタカナがあったとします。
最初の while( result ) のループで次のように変換されます。

\xB8\x814A\x8389\x8374\x8342\x8362\x834E\x8358

んで、●[1]の findup で次のように変換されます。

\x834E\x814A\x8389\x8374\x8342\x8362\x834E\x8358

結局「\x834F\x8389\x8374\x8342\x8362\x834E\x8358」
にならないんです。

ではでは。

[ ]
RE:03771 半角カナ->No.03774
ひろ さん 99/07/24 17:23
 
 安久津さん今日は、ひろです。
> んで、●[1]の findup で次のように変換されます。
>
> ク゛ラフィックス
 実はこれ気付いたはいたんです(^^)。ただこれのために file の頭になに
か任意の文字を挿入しておくのは好きじゃないんですよね (最後に消しても
見た目は、何も編集していなくても「更新」になってしまうので)。あと一般
的な日本語の文章は、段落の最初は字下げを行うので、あれでごまかしてい
ます(^^)。
 しかし自分で使うのはまだしも、公の場に投稿する場合は不味いですねm(_|_)m。
以下の物に置き換えます。
//-------------------------------------------------------------------
main:
  #count = 0;
  disabledraw;
  #orgx=x;
  #orgy=y;
  call save_search;
  gofiletop;
  insert "\n";
  gofiletop;
  call sear_hankaku;
  call reset_search;
  gofiletop;
  delete;
  moveto   #orgx,#orgy;
  endmacro;

save_search://*******検索状態を保存
  #reg_search=getininum("hidemaru.ini","Env","SelectFound");
  if(!#reg_search){
    writeininum "hidemaru.ini","Env","SelectFound",1;
    envchanged;
  }$search=searchbuffer;
  #search=searchoption;
  return;

reset_search://******検索を初期状態に戻す
  if(!#reg_search){
    writeininum "hidemaru.ini","Env","SelectFound",#reg_search;
    envchanged;
  }setsearch $search, #search;
  return;

sear_hankaku:
  searchdown "[。-゚]+",regular;
  //          ^^^^全て半角
  while(result){
    call han2zen;
    #count = #count + 1;
    finddown;
  }return;

han2zen:
  tozenkakukata;
  escape;
  return;
//-------------------------------------------------------------------
> # searchdown "[。-゜]+",regular; は 0xA1 0xDF でないです。
> # 0x8142 0x814B の全角になっています。
> # たぶんメーラーの自動変換ではないでしょうか?
 安久津さんは何を使って、秀ネットを巡回されているのでしょうか? 私は
秀Term を使っていますが、投稿時・読み込み時共に記録されている log は
問題なく半角のままです。

 もし mail client による転送によってこういったことが起きるのならば、
半角カタカナが捕まれている場合は、送付 file にするなど、なにか対策が
必要だと思います。->秀ネット担当様

[ ]
RE:03774 半角カナ->No.03775
安久津 さん 99/07/24 20:04
 
こんにちはひろさん、安久津です。

> 実はこれ気付いたはいたんです(^^)。ただこれのために file の頭になに
うーん、余計なお節介でした。

>見た目は、何も編集していなくても「更新」になってしまうので)。あと一般
編集したかどうかのフラグが立っていたら、undo とか。
# 面倒クサー。

> しかし自分で使うのはまだしも、公の場に投稿する場合は不味いですねm(_|_)m。
そんなことはないです。こちらこそ失礼しました。m(__)m

>> # searchdown "[。-゜]+",regular; は 0xA1 0xDF でないです。
>> # 0x8142 0x814B の全角になっています。
>> # たぶんメーラーの自動変換ではないでしょうか?
> 安久津さんは何を使って、秀ネットを巡回されているのでしょうか? 私は
>秀Term を使っていますが、投稿時・読み込み時共に記録されている log は
>問題なく半角のままです。
マイクロソフトの Outlook Express です。
秀ネットの発言はこれで受け取っています。
推測(1)秀ネットから送られてきた発言が、全角に変換されていた。
推測(2)Outlook Express が受け取って、勝手に全角に変換した。

んで、今 WWWブラウザで秀ネットを見にいったら、
ひろさんの発言03769の問題箇所は、確かに半角カタカナでした。

問い>他のメーラーを使って、秀ネットの発言を受け取っている人
ひろさん発言03769の サブルーチン sear_hankaku: の
searchdown の引数が全角になっていますか?

ではでは。

[ ]