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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
【VB.Net】バイト型配列に読み込んで改行区切り
Visual Basic(VBA)
-
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
-
4
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
5
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
6
配列の重複する値とその個数を取得したい
Visual Basic(VBA)
-
7
frxファイルの役目
Visual Basic(VBA)
-
8
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
9
構造体のメンバをfor文で回したい
C言語・C++・C#
-
10
TextFieldParserの固定長桁数をバイト単位で指定したい
Visual Basic(VBA)
-
11
デザイン時のVisible=Falseは実行時に変更できない?
Visual Basic(VBA)
-
12
未、済、完了の英訳は?
英語
-
13
vb.netでのリッチテキストボックスの改行コード
Visual Basic(VBA)
-
14
VB2010でCSVファイルの読み込み
Visual Basic(VBA)
-
15
svnでファイル移動すると履歴がついてこない
その他(コンピューター・テクノロジー)
-
16
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
-
17
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
ファイルの内容をstrcpyを使っ...
-
エクセルVBA 文字列領域が不足...
-
C++で空Enterの入力を判...
-
改行を読み飛ばす
-
delphi でのコード上でTab を入...
-
jsp 改行コードで改行させて表...
-
変数の中の改行コードをBRタグ...
-
ファイルから読み取った改行文...
-
文の改行
-
C# csvでセル内で改行するには
-
改行について
-
awkの BEGIN{RS=""} で空行を削...
-
VBA テキストボックスの行数取得
-
1行ごとに取得して、その改行...
-
C言語の標準入力で改行しない方法
-
ダイアログにおける改行
-
FORTRAN95の改行について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
-
C++で空Enterの入力を判...
-
改行について
-
ファイルから読み取った改行文...
-
jsp 改行コードで改行させて表...
-
C++でのCRLFについて
-
エクセルVBA 文字列領域が不足...
-
テキストファイルから改行コー...
-
JavaDoc コメントの改行について
-
最終行の改行について
-
JavaMail,本文中の改行について
-
【VBA】エクセルで最後の不要な...
-
文の改行
-
VBAでCSVをExcelに取り込む時に...
-
ラベル(スタティックテキスト)...
-
改行コード(CR/LF)の設...
-
テキストボックス行の桁数を制...
おすすめ情報