- PR -

指定した文字数後に改行を入れたい。

1
投稿者投稿内容
Nakata
常連さん
会議室デビュー日: 2004/03/30
投稿数: 41
投稿日時: 2004-05-04 10:31
あいうえおかきくけこ、さしすせそ

上のような文字があるとします。
5文字間隔で改行を入れ、句読点が入る場合は、次の行に送らず
句読点の次の文字を改行する。

こんなことできますか?

[ メッセージ編集済み 編集者: Nakata 編集日時 2004-05-04 10:37 ]
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-05-04 11:35
引用:

句読点が入る場合は、次の行に送らず句読点の次の文字を改行する。


禁則処理で検索して、以下のサイトを見つけました。
http://www.kanazawa-net.ne.jp/~pmansato/kinsoku.htm

C++ Builderのプロジェクトとして作られているようですが、開発環境を特に指定していないようなので、何でもよいのだろうと判断し、リンクを貼っておきます。
Nakata
常連さん
会議室デビュー日: 2004/03/30
投稿数: 41
投稿日時: 2004-05-04 11:37
ありがとうございます。
開発環境を書くのを忘れていました。すいません。
ちなみに開発環境はVBです。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-04 18:23
諸農です。

引用:

Nakataさんの書き込み (2004-05-04 10:31) より:

こんなことできますか?



怪人二十面相からの挑戦状みたいですね。
「この謎が解けるかな、諸君」なんて感じ。

コード:

private void button1_Click(object sender, System.EventArgs e)
{
string m = "、。,.";
int p = 0;
StringBuilder sb = new StringBuilder(textBox1.Text);
while (p < sb.Length-1)
{
p += 5;
if (m.IndexOf(sb[p],0) > -1) p++;
sb = sb.Insert(p,Environment.NewLine);
p += 2;
}
string ret = sb.ToString();
MessageBox.Show(ret);
}



VBに翻訳しやすいかと思ったのでそのままにしていますが、
パフォーマンスアップには"p += 5"と"P += 2"を一緒にして
初期値で5を与えた方がいいと思います。

--編集追記--
パフォーマンス云々じゃなくて、初期値で5を与えないと
このコードはクラッシュしますね(^^;
という事で、適時修正してくださいませm(__)m

_________________
諸農和岳
Powered by Borland Delphi/C++Builder & Microsoft VS.NET

[ メッセージ編集済み 編集者: Jubei 編集日時 2004-05-04 19:58 ]
Nakata
常連さん
会議室デビュー日: 2004/03/30
投稿数: 41
投稿日時: 2004-05-04 18:50
挑戦状なんて大それたことなってしませんよ(笑)
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)