ページ 11

空行の時は文字列を付加しない方法

Posted: 2011年4月15日(金) 20:23
by MILD
richTextBox・・・変換前データ
richTextBoxResul・・・結果出力
textBoxCovert・・・付加文字

変換前データの各行ごとに付加文字をつけて結果出力したいです。
但し変換前データの空行の時は付加文字をつけたくないです。

空行でも関係なく付加することは出来たのですが
空行の時の処理がイマイチできません。

コード:

 ※ 関係なしに各行に追加版

	// 初期化
	this->richTextBoxResult->Text = "";
	this->richTextBoxResult->Text = this->richTextBox->Text->Replace( "\n", this->textBoxCovert->Text +"\n" ) + this->textBoxCovert->Text;

 ※ 1行ずつ読み込んで空行か判定してから処理する版
	
	// 初期化
	this->richTextBoxResult->Text = "";
	
	//TextBox1に入力されている文字列から一行ずつ読み込む
	//文字列(TextBox1に入力された文字列)からStringReaderインスタンスを作成
	System::IO::StringReader^ rs = gcnew System::IO::StringReader(this->richTextBox->Text);

	//ストリームの末端まで繰り返す
	while (rs->Peek() > -1){
		//一行読み込んで表示する
		if( rs->ReadLine() == "" || rs->ReadLine() == "\n" ) this->richTextBoxResult->Text += "\n";
		else this->richTextBoxResult->Text += rs->ReadLine() + this->textBoxCovert->Text + "\n";
	}

	rs->Close();
多分、ifの判定がおかしいかと思うのですがソースを見ては頂けないでしょうか。

Re: 空行の時は文字列を付加しない方法

Posted: 2011年4月15日(金) 20:24
by MILD
付加文字→AAA

----------
変換前
----------
あああ
いいい

ううう
----------

----------
変換後
----------
あああAAA
いいいAAA

うううAAA
----------

みたいな感じにしたいです、
図が下手で申し訳ないです。

Re: 空行の時は文字列を付加しない方法

Posted: 2011年4月15日(金) 22:54
by softya(ソフト屋)
WindowsフォームのC++/CLIのコードだと思いますが、どうイマイチなのでしょうか?
イマイチの詳細を教えてください。
あと、デバッガで問題の部分の動きは調べられましたか?

Re: 空行の時は文字列を付加しない方法

Posted: 2011年4月16日(土) 01:26
by ISLe
とりあえず見ただけですが。
rs->ReadLine()の度に1行読み込んでしまうので、「一行読み込んで表示する」とコメントが書かれているところで最大3行読み進んでしまいますね。
あとReadLineは改行を読み込まないので『改行のみ』の判定は不要です。

Re: 空行の時は文字列を付加しない方法

Posted: 2011年4月16日(土) 07:11
by MILD
出来ました!!!
ReadLineの仕方が悪かったのですね。
変数に入れたところ問題なく出来ました。

助かりました!!
ありがとうございました。