掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MEMOで連続改行を規制したいんです。と他 (ID:698)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
上の1、2を理解できれば、あとはできるはずです。 上の2では、 上から順に、各行の末尾へ文字列を追加する。 です。 各行をループで調べられる(かつ、上から順に調べられるので、空行の連続が簡単に調べられる)ことがわかります。 これを踏まえて、次のように処理できますね。 順に調べて、空行でなければ空行カウントを0にする。 空行ならば、空行カウントを1進めて、 もし空行カウントがn以上であれば、現在の行を削除し、空行カウントを1戻す。 です。 ただし、削除するとLines.Countも変わるので、できればLines.Count-1から初めて、for i:=Memo1.Lines.Count-1 downto 0 とした方が楽です。 つまり、下から順に調べる、ということです。 少し違う方向から見るならば、(n+2)行以上の改行を、(n+1)行の改行に置き換える、とも言い換えられます。 # 先頭行のみ違います たとえば、n=2だとして、2行までの空行を許すとすると、 abc[改行][改行][改行]def[改行] は許されます。 abc[改行][改行][改行][改行]def[改行] は、abcの後の改行が1回多いです。 abc[改行][改行][改行][改行][改行]def[改行] は、abcの後の改行が2回多いです。 4回改行でも、5回改行でも、必ず3回までにするのなら、4回改行を3回改行に置き換えられるだけ置き換えればよいのです。 abc[改行][改行][改行][改行][改行]def[改行] の、[改行][改行][改行][改行]を、[改行][改行][改行]に置き換えれば、 abc[改行][改行][改行][改行]def[改行] になります。 さらに置き換えれば、 abc[改行][改行][改行]def[改行] となります。 これ以上は、4回の改行が見つからないので終了です。 こちらの場合は、Whileループで、Pos関数の戻り値が0以上なら繰り返すようにして、Pos関数で改行が繰り返されている箇所を探し、その部分をSelLengthで指定してSelTextで置き換えてしまえばOkのはず。 # 未確認です。アイデアだけですみません。 これで解らなければ、わからない箇所について聞いてください。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.