[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/02/21(Wed) 11:20
投稿者名:maa
Eメール:
URL :
タイトル:
文字列の最後の改行コードを削除するには?。
VB6.0です。よろしくお願いします。
改←改行コード

あああ改AAA改いいい改

と言うような文字列があるとします。
これをテキストファイルに書き込むと
以下になってしまいます。

あああ改
AAA改
いいい改

[EOF]

本来はこのようにしたい。
あああ改
AAA改
いいい改
[EOF]

lngCount = InStrRev(strTxt, vbCrLf)
strTxt = Left(strTxt, lngCount)

このようにしても上手くいきません。
2回繰り返すといの行が削除されてしまい
後は同じです。
文字列の後ろについているごみコードを
見る方法はあるのでしょうか?
また、文字列のみにする方法はあるのでしょうか?

投稿時間:2007/02/21(Wed) 11:35
投稿者名:K.J.K.
Eメール:
URL :
タイトル:
Re: 文字列の最後の改行コードを削除するには?。
(もしEOFが文字として入っている場合はEOFを除いた)最後の2文字が改行文字列であり、
その直前の2文字もまた改行文字列である場合に、改行文字列を表す2文字を取り除く、
という処理をすれば十分ですよね。

投稿時間:2007/02/21(Wed) 11:59
投稿者名:maa
Eメール:
URL :
タイトル:
Re^2: 文字列の最後の改行コードを削除するには?。
K.J.K.さま
早速ありがとうございます。

> その直前の2文字もまた改行文字列である場合に、改行文字列を表す2文字を取り除く、
> という処理をすれば十分ですよね。

全体の文字列数から2を引いたら希望通りになりました。
ありがとうございます。
しかしながら2文字はなんなのか確かめる術はありますでしょうか?
よろしくお願いします。

投稿時間:2007/02/21(Wed) 12:13
投稿者名:K.J.K.
Eメール:
URL :
タイトル:
Re^3: 文字列の最後の改行コードを削除するには?。
> 全体の文字列数から2を引いたら希望通りになりました。

いきなりとるのは危険でしょう。まず確認をしてみるとか。
文字列の長さはLen関数でわかりますし、文字列の一部を抜き出すのは
Mid$で可能です。InStr(Rev)で特定の文字列の位置もわかりますよね。

で、例えば、改行文字列(vbNewLine)が2つ連なった文字列(vbNewLine & vbNewLine)
をInStrRevで検索して、それと文字列の長さを比較してみるとか。

投稿時間:2007/02/21(Wed) 15:09
投稿者名:maa
Eメール:
URL :
タイトル:
Re^4: 文字列の最後の改行コードを削除するには?。
K.J.K.さま

> 文字列の長さはLen関数でわかりますし、文字列の一部を抜き出すのは
> Mid$で可能です。InStr(Rev)で特定の文字列の位置もわかりますよね。

いろいろとありがとうございます。
MidとAscを組み合わせて出力させてみたりと
勉強になりました。
またよろしくお願いします。

投稿時間:2007/02/21(Wed) 11:55
投稿者名:大吉末吉
Eメール:
URL :
タイトル:
Re: 文字列の最後の改行コードを削除するには?。
> VB6.0です。よろしくお願いします。
> 改←改行コード
>
> あああ改AAA改いいい改
>
> と言うような文字列があるとします。
> これをテキストファイルに書き込むと
> 以下になってしまいます。
>
> あああ改
> AAA改
> いいい改
> 改
> [EOF]

どうやって出力しています?
例えばPrint#メソッドなら、最後に改行が行われますから、「;」をつけて改行を抑止するとか・・・


> lngCount = InStrRev(strTxt, vbCrLf)
> strTxt = Left(strTxt, lngCount)

これって・・・例えば対象文字列が、
「あああ[CR][LF]AAA[CR][LF]」の場合(vbCrLfは、vbCrとvbLfの2文字)
1回目の「InStrRev」で、最後の[CR]の位置を返すので、
Leftでは、
「あああ[CR][LF]AAA[CR]」こういう中途半端な文字列に・・・

> strTxt = Left(strTxt, lngCount-1)
では?

投稿時間:2007/02/21(Wed) 15:05
投稿者名:maa
Eメール:
URL :
タイトル:
Re^2: 文字列の最後の改行コードを削除するには?。
大吉末吉 さま
> どうやって出力しています?
> 例えばPrint#メソッドなら、最後に改行が行われますから、「;」をつけて改行を抑止するとか・・・

ありがとうございます。
「;」で解決しました。
また「InStrRev」の位置の返し方など勉強になりました。
ありがとうございます。またよろしくお願いします。