
CR,LF,CRLFが混在しているテキストで難儀しております。
VB.NETでReadLine()を使えば、どんな改行コードでも削除した文字列を取得できますが、同じ内容を書き込む場合にどのような改行コードわからないと同じファイルができません。
安直にNewLineやWriteLine()を使うと、どんな改行コードでWindowsの場合はCRLFになります。
ReadLine()で取得した文字列+改行コードがわかる方法がありますか?
以下、例です。
dim s as String
Dim sr As New System.IO.StreamReader("yomu", "ISO-2022-JP")
Dim sw As New System.IO.StreamWriter("kaku", false, "ISO-2022-JP")
While sr.Peek() > -1
s = sr.ReadLine() '改行文字を取り除いた文字列
sw.Write(s) '書き込む
end While
sr.close()
sw.close()
No.3ベストアンサー
- 回答日時:
下記の方法で確認できます。
Dim cn As integer
Dim cbuf As String
Dim cLine() As String
cbuf = "".PadLeft(CInt(FileSystem.FileLen("C:\sbj\temp\aaaa.txt")))
FileSystem.FileOpen(1, "aaaa.txt", OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default)
FileSystem.FileGet(1, cbuf)
cbuf = Replace(cbuf, Chr(13) & Chr(10), Chr(12))
cbuf = Replace(cbuf, Chr(10), Chr(10) & Chr(13) & Chr(10))
cbuf = Replace(cbuf, Chr(13), Chr(13) & Chr(13) & Chr(10))
cbuf = Replace(cbuf, Chr(12), Chr(13) & Chr(10))
cLine=split(cbuf,Chr(13) & Chr(10)) ' 行変数 cLine に代入
for cn=0 to cLine.Length-1 ' 行数分ループ
If cLine(cn).Length>0 then
If cLine(cn).Substring(cLine(cn).Length - 1, 1) = Chr(10) Then
<===============> 最後の文字はLF
ElseIf cLine(cn).Substring(cLine(cn).Length - 1, 1) = Chr(13) Then
<===============> 最後の文字はCR
Else
<===============> 最後の文字はCRLF
End If
Else
<===============> 最後の文字はCRLF
End if
next cn
No.2
- 回答日時:
昔ながらのOpenステートメントを使って
Open "ファイルのフルパス" For Binary Lock Read Write As #1
なんてやります
ただ、今度は改行が拾えなくなるので、該当する改行コード(CR,LF,CRLF)の何れかに当たったら、その部分が改行と判断します
例えば拾ったとあるコードがCRかどうかの判断は
If MidB(buf,i,1) = Chr(13) then
てな感じ(Chr(13)はvbCRでも良かったはず)
この改行コードの入っていた位置と組み合わせ(CRLF= Chr(13) & Chr(10))をご自身で作った改行コードごとに行った作業の終了後に、ひとつなぎの文字列に戻してやれば理論上可能です
○CR□LF
↓
○=△
□=◇
↓
△CR◇LF
コレを書き出す
メモリの都合で難しい時は、Appendを使って追記して行けるので、一気にメモリに入れなくても分けて作業できます
コードに起こすと、結構な量なので概念(?)だけ
参考にするならこの辺り
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
http://officetanaka.net/excel/vba/file/file08.htm
http://yumi-ii.squares.net/archives/2005/09/2005 …
No.1
- 回答日時:
文字列じゃなくてバイナリとして走査する形の物にしないと無理だね。
文字列は改行は改行としてしか扱ってくれないけれどバイナリなら「文字コード」という名の数値データでしかなくなるから。
VBでどうやるのかは判らない。ゴメン
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
CSVファイルの改行コード判別
Visual Basic(VBA)
-
VBSにて改行コードの検出・置換
Visual Basic(VBA)
-
【VB6】項目内に改行コードを含むCSVファイルの読み込み
Visual Basic(VBA)
-
-
4
(VBS) テキストファイル読込での改行コード
その他(プログラミング・Web制作)
-
5
100万行のCSVを10万行ずつのファイルに区切るには?(UTF-8、改行LF)
Excel(エクセル)
-
6
フォームの再読み込み
Visual Basic(VBA)
-
7
Winmerge ファイルの中身は同じなのに黄色くなる
その他(OS)
-
8
【VB.NET】App.configにファイルパスを設定して読み込みたい
Microsoft ASP
-
9
Access Error3061 パラメータが少なすぎます。4を指定してください。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
LaTeX: captionの中で改行した...
-
ButtonコントロールのT...
-
C# csvでセル内で改行するには
-
【Tex】\\verbatiminputについて
-
VB6 TextBoxの先頭が自動改行...
-
delphiにて●文字列置換で勝手に...
-
エクセル(VBA)でファイル出力時
-
VBAでCSVをExcelに取り込む時に...
-
変数の先頭一行を削除するには...
-
正規表現で、半角大文字と半角...
-
文字の入力で横バー上段、中断...
-
Excel関数「COUNTIF」で”文字”...
-
メッセージボックスで1025文字...
-
PHPメールフォーム URLと半角...
-
エクセルのCOUNTIFが正しくカウ...
-
Python 正規表現でsetと=の間の...
-
文字化け変換方法
-
正規表現について
-
1バイト文字の上位4ビット・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
jsp 改行コードで改行させて表...
-
改行について
-
VBAでCSVをExcelに取り込む時に...
-
【VBA】エクセルで最後の不要な...
-
ラベル(スタティックテキスト)...
-
ファイルから読み取った改行文...
-
Excel VBAからBeckyを起動して...
-
C++で空Enterの入力を判...
-
JAVA Spring 改行コードを含む...
-
変数の中の改行コードをBRタグ...
-
秀丸の正規表現で複数行にわた...
-
awkで改行を除いて文字列を抜き...
-
エクセルVBA 文字列領域が不足...
-
vb.netでのリッチテキストボッ...
-
グレープシティのSPREAD...
-
COBOLの改行
-
最終行の改行について
おすすめ情報