推しミネラルウォーターはありますか?

秀丸に英文(日本文)を入力し
There is no time to waste. The nation's economy faces three major problems this year. Plans to accelerate disposal could aggravate deflation.


(1)There is no time to waste.
(2)The nation's economy faces three major problems this year.
(3)Plans to accelerate disposal could aggravate deflation.

となるように終止符(.)ごとに文を切ってそれぞれ文の前に(1)、(2),(3)...と
番号を入れたいのですが、どのようにマクロを組めばよいですか?

A 回答 (9件)

>#6の補足の続きですが、(。

)でも\\。にするということでしょうか? 

ピリオドはメタキャラクタなので、ピリオドそのものをマッチさせるにはエスケープする必要がある。さらにマクロで正規表現を使う場合の""内の表記は\を二重にする。
句点はメタキャラクタではないのでエスケープする必要はない。

この回答への補足

”エスケープ”せずにマクロを以下のようにしました

replaceallfast "\\n", "",regular;
replaceallfast "。 *", "。\n",regular;
#i=result;
while(#i>0){
movetolineno 1,#i;
insert "("+str(#i)+")";
#i=#i-1;
}
endmacro;


以下の記事でマクロ実行しました

[米議会決議]「イラクは最後通告と受け止めよ」
イラク攻撃の準備を進めるブッシュ米大統領にとって、大きな援軍だろう。

 米上下両院は、大統領が求めていたイラクへの武力行使容認決議を賛成多数で採択した。

 決議は、イラクの脅威から米国の安全を守り、関連するすべての国連安全保障理事会決議を履行させるために、大統領が「必要かつ適切」と判断すれば、武力行使できるとする内容だ。

 十一年前、湾岸戦争直前にも、議会は同様の決議を採択したが、小差だった当時に比べ、今回は大差の支持を得た。

 イラクのフセイン政権が、大量破壊兵器の入手・拡散を図る危険な存在であることでは、ブッシュ政権と議会の認識は一致している。




結果このようになりました。

(1)[米議会決議]「イラクは最後通告と受け止めよ」  イラク攻撃の準備を進めるブッシュ米大統領にとって、大きな援軍だろう。
(2) 米上下両院は、大統領が求めていたイラクへの武力行使容認決議を賛成多数で採択した。
(3) 決議は、イラクの脅威から米国の安全を守り、関連するすべての国連安全保障理事会決議を履行させるために、大統領が「必要かつ適切」と判断すれば、武力行使できるとする内容だ。
(4) 十一年前、湾岸戦争直前にも、議会は同様の決議を採択したが、小差だった当時に比べ、今回は大差の支持を得た。

なんとか私の思うようになったようです。これでいいでしょうか? 

補足日時:2003/01/17 02:13
    • good
    • 0
この回答へのお礼

私の超基礎的質問に”辛抱強く”お付き合いしてくださってありがとうございます。
私も自分でマクロが組めるようになりたいです。

お礼日時:2003/01/20 23:19

No.6の訂正




while(#i>0){
#iが0以上なら{}を実行しつづける。


while(#i>0){
#iが0よりおおきいなら{}を実行しつづける。
    • good
    • 0

秀丸のヘルプの正規表現のところに



>マクロで正規表現を使う場合は、ダブルクォーテーション(")内の表記になるため、\マークを二重にして\\として書く必要があります。

とあります。

この回答への補足

#6の補足の続きですが、(。)でも\\。にするということでしょうか? 

(。)の変換の場合は次のマクロでいいですか。
replaceallfast "\\n", "",regular;
replaceallfast "\\。*", "。\\n",regular;
#i=result;
while(#i>0){
movetolineno 1,#i;
insert "("+str(#i)+")";
#i=#i-1;
}
endmacro;

補足日時:2003/01/17 00:30
    • good
    • 0

No.5の解説



replaceallfast "\\n", "",regular;
全ての改行を置換して消します。

replaceallfast "\\. *", ".\\n",regular;
全ての"."を".\n"(ピリオドと改行)に置換します。
細かく言うと、ピリオドの後に半角スペースがあれば一緒に置換されます。

#i=result;
さっき何個置換したかを#iに入れておく。

while(#i>0){
#iが0以上なら{}を実行しつづける。

movetolineno 1,#i;
#i行目の先頭にカーソルを移動。

insert "("+str(#i)+")";
カーソル位置に(#i)を挿入。

#i=#i-1;
#iの値から1を引いたものを#iに入れる。

}
ループ

endmacro;
マクロ終了。


はじめに番号を入れてピリオドで改行を入れて…
というようにやりかたはいろいろあると思います。

この回答への補足

(.)ではなく(。)で改行し番号をいれたいのですが、
#6のmacro解説の解説のうちで

「replaceallfast "\\. *", ".\\n",regular;
全ての"."を".\n"(ピリオドと改行)に置換します。
細かく言うと、ピリオドの後に半角スペースがあれば一緒に置換されます」

の(.)をそのまま(。)に変えて

「replaceallfast "\\。*", "。\\n",regular;
=「全ての"。"を"。\n"(終止符と改行)に置換しまする」

にするだけではだめですか。
(。)は(.)と違いメタキャラではありませんから
。の前で\は1つでいいでしょうか?

自分で。に変えて日本語の文でマクロ実行しましたが、日本語の文字が全て(。)に変換されました。
.なら\.にすべきですが、。は\。にする必要はないですか。それとも何が間違っているのでしょうか。

補足日時:2003/01/16 04:23
    • good
    • 0

No.3のマクロは番号も自動で入ります。


ただし、最初から改行が入っていると番号がずれます。
最初に改行を消してごまかすと

replaceallfast "\\n", "",regular;
replaceallfast "\\. *", ".\\n",regular;
#i=result;
while(#i>0){
movetolineno 1,#i;
insert "("+str(#i)+")";
#i=#i-1;
}
endmacro;

マクロの使い方は秀丸のヘルプに書いてあるとおりに。
テキストファイルを作ってマクロを記述、拡張子を .mac にする。
マクロファイルは HIDEMARU.EXE と同じフォルダに置く。
そうすると、秀丸のメニューから
マクロ → マクロ実行...
でマクロが使えます。

この回答への補足

#3で紹介していただいたマクロを
次の記事で実行しました。

Change economic policy

-------------------------------------------------------------------------------
Yomiuri Shimbun

The nation marked the third New Year of the new century with its economy remaining in the doldrums and in critical condition.

The domestic economy has not been able to escape the "lost decade"slump that followed the collapse of the bubble economy of the 1980s, a slump that is unprecedented in the world.

Nearly two years have passed since the government of Prime Minister Junichiro Koizumi was inaugurated with the policy of structural reforms as a key tool to rebuilding the economy.

However, his reform initiatives have not borne fruit, and the economy remains mired in deflation.

そしたら、よそうに反して次のようになってしまいました。

(1)Change economic policy
(2)
(3)-------------------------------------------------------------------------------
(4)Yomiuri Shimbun
(5)
(6)The nation marked the third New Year of the new century with its economy remaining in the doldrums and in critical condition.
(7)
(8)
(9)The domestic economy has not been able to escape the "lost decade"slump that followed the collapse of the bubble economy of the 1980s, a slump that is unprecedented in the world.
(10)
(11)
(12)Nearly two years have passed since the government of Prime Minister Junichiro Koizumi was inaugurated with the policy of structural reforms as a key tool to rebuilding the economy.
(13)
(14)
(15)However, his reform initiatives have not borne fruit, and the economy remains mired in deflation.

(4)までいいのになぜ(15)まででてくる?
のでしょうか?

また私は
sentence(1)
sentence(2)
sentence(3)
と、番号を文頭につけるのではなくて、文末のピリオド(.)をそのまま(1)(2)(3)---に変えてもいいのですが。

補足日時:2003/01/16 00:18
    • good
    • 0
この回答へのお礼

ありがとうございます。#5のマクロを保存し、実行しましたら、以下のようになりました。
ただし、U.S.など文中に(.)が現れる場合は
事前にU.S.をUSに置換しなければなりませんでした。
同様にその他の文中の(.)の置換を除外する方法
がわかりません。
(1)Change economic policy-------------------------------------------------------------------------------Yomiuri Shimbun The nation marked the third New Year of the new century with its economy remaining in the doldrums and in critical condition.
(2)The domestic economy has not been able to escape the "lost decade"slump that followed the collapse of the bubble economy of the 1980s, a slump that is unprecedented in the world.
(3)Nearly two years have passed since the government of Prime Minister Junichiro Koizumi was inaugurated with the policy of structural reforms as a key tool to rebuilding the economy.
(4)However, his reform initiatives have not borne fruit, and the economy remains mired in deflation.

ついでに日本語の場合も同様に( 。)を
(1)日本文
(2)日本文
(3)日本文
に変えるマクロ教えてもらえないでしょうか?
「#5のマクロのこの部分を変えればいい」という程度で。

お礼日時:2003/01/16 00:39

.\n に変換するとおかしくなるようですね。



いったん .を ---に置換し、
その後 正規表現で ---を \n()に置換したらいいですね。

それで 最後の()を 最初にもってくればOKです。

この回答への補足

(.)はメタキャラだということがわかりました
それで全文字
()
()
()
()
()
()
()
という具合に置換された理由がわかりました。
(実はこの1週間、マクロの勉強してました)
はじめから¥.を\n()に置換することするのは
どうですか?

補足日時:2003/01/16 00:03
    • good
    • 0
この回答へのお礼

ありがとうございました。現在プログラムの勉強中です。また質問させていただきます。  

お礼日時:2003/01/20 23:21

置換ダイアログで「正規表現」にチェックをいれると \n が改行になります。




初めて秀丸マクロを組んでみました。
とりあえず例文では期待した動作をしてます。

replaceallfast "\\. *", ".\\n",regular;
#i=result;
while(#i>0){
movetolineno 1,#i;
insert "("+str(#i)+")";
#i=#i-1;
}
endmacro;

この回答への補足

ありがとうございます
教えていただいたマクロの意味がわかりません。
1、2、3は1つ1つ入れるしかないのでしょうか

補足日時:2003/01/08 23:32
    • good
    • 0

\n は 改行を意味します。


正規表現をチェックしないと有効になりません。

\n()を () にそのまま置換し

さらに 正規表現のチェックを入れてから
()を \n() に置換してください。

この回答への補足

()
()
()
()
()
()
()
()
()
()
()
()

ご指摘の通りにしましたら
全文上の様になってしまうのですが。?

補足日時:2003/01/06 23:34
    • good
    • 0

1 2 3と入れるのは わかりませんが、


. を .\n()には置換できますので、それから手動で直したらいいでしょう。
(正規化利用)

この回答への補足

ありがとうございます。 

There is no time to waste. The nation's economy faces three major problems this year. Plans to accelerate disposal could aggravate deflation.
を[検索]→[置換]のダイアローグを開き、[検索(S)]で.(ピリオド)を入れ、[置換(E)]で.\n()を入れ右の[全て置換]をクリックしました。

その結果次のようになりましたが、
There is no time to waste.\n()The nation's economy faces three major problems this year.\n()Plans to accelerate disposal could aggravate deflation.\n()

その後の「手動」の直し方を教えていただけないでしょうか

補足日時:2003/01/05 23:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報