
tr = New StreamReader("a.txt", System.Text.Encoding.GetEncoding("Shift_JIS"))としたストリームから
buff = tr.ReadLine()で1行読み込むとタブ文字が削除されてしまうようなのですが、これを回避する方法は無いでしょうか?
読み込んだ文字列からタブまたはスペースを区切りとして文字列を切り出したいと思っています。
VB2008を使っています。
具体的には、アセンブラのソースファイルからラベル定義を切り出したいと思っています。
No.3ベストアンサー
- 回答日時:
#1 Wizard_Zeroです。
いくつか気になったので・・・。
まず、
strSpltBuff = strBuff.Split(New String() {"\t"}, System.StringSplitOptions.RemoveEmptyEntries)
これが、タブ文字でSplitしようとしているのであれば "\t" ではできません。
Microsoft.VisualBasic.ControlChars.Tab を使ってください。
ここが原因であるのなら、Tab文字が読み込まれていないわけではないと思います。
変数の中身をウォッチ式で見ているようですが、ウォッチ式にはTab文字及び、Tab文字による空白が表示されません。出力ウィンドウやイミディエイトウィンドウにおいては、Tab文字が半角スペースに置き換えられるようです。(VB2005で確認した限りですが)
ファイルからReadLineした文字列に、タブ文字が含まれているのかいないのか、をどのように検証したのでしょうか?
ご回答ありがとうございます。
ご指摘いただいた点、確認しました。
Wizard_Zeroさんの言われるように、"\t"の部分をMicrosoft...Tabに修正したところ、意図したとおりに分割することが出来ました。
おっしゃるように、Tab文字が読み込まれていないわけでは有りませんでした。
読み込んだ文字列をご想像のとおりウォッチ式で確認し、"\t"で分割して出来なかったたので、読み込みが出来ていないと勝手に思い込んでしまったようです。お恥ずかしい限りです。。。。
本当にありがとうございました。
No.4
- 回答日時:
#1 Wizard_Zeroさんの指摘通りです。
ローカルで確認しました。TABコードを修正することでTAB単位の分割は成功します。
ご回答ありがとうございます。
わたくしの方でも、正常に読み込み&分割することが出来ました。
お付き合いいただいてありがとうございました。
No.2
- 回答日時:
vb2008(VisualStudio2008Pro)で動作確認しましたが,問題の再現はできませんでした。
とくにtabコードがあっても問題ないようです。"a.txt"の一部でも抜粋して添付は可能でしょうか?
(出来ればバイナリダンプがあれば確認しやすいです。)
ご回答ありがとうございます。
こちらは、VB2008ExpressEditionを使用しております。
(特に関係は無いと思いますが念のため)
下記にa.txtを添付します。
27 0010 @AB_CDEFGH1EQU16;XXXXXXXXXX
28 0006 @AB_CDEFGH2EQU6;YYYYYYYYYY
29 000A @AB_CDEFGH3EQU1+9;ZZZZZZZZZZ
<TABを明示>
27 0010 <\t>@AB_CDEFGH1<\t>EQU<\t>16<\t><\t>;XXXXXXXXXX
28 0006 <\t>@AB_CDEFGH2<\t>EQU<\t>6<\t><\t>;YYYYYYYYYY
29 000A <\t>@AB_CDEFGH3<\t>EQU<\t>1+9<\t><\t>;ZZZZZZZZZZ
あと、バイナリダンプを下記に示します。
20,20,32,37,20,20,20,30,30,31,30,20,20,20,20,20,
20,20,20,20,20,09,40,41,42,5F,43,44,45,46,47,48,
31,09,45,51,55,09,31,36,09,09,3B,82,77,82,77,82,
77,82,77,82,77,82,77,82,77,82,77,82,77,82,77,0D,
0A,20,20,32,38,20,20,20,30,30,30,36,20,20,20,20,
20,20,20,20,20,20,09,40,41,42,5F,43,44,45,46,47,
48,32,09,45,51,55,09,36,09,09,3B,82,78,82,78,82,
78,82,78,82,78,82,78,82,78,82,78,82,78,82,78,0D,
0A,20,20,32,39,20,20,20,30,30,30,41,20,20,20,20,
20,20,20,20,20,20,09,40,41,42,5F,43,44,45,46,47,
48,33,09,45,51,55,09,31,2B,39,09,09,3B,82,79,82,
79,82,79,82,79,82,79,82,79,82,79,82,79,82,79,82,
79,0D,0A,
また、文字列の切り出しには
Dim strBuff As String
Dim strSpltBuff(30) As String
strSpltBuff = strBuff.Split(New String() {"\t"}, System.StringSplitOptions.RemoveEmptyEntries)
という方法で行おうとしていますが、上記実行後、strSpltBuffを
ウォッチで確認すると、Lengthは1となっており、strSpltBuffの内容は下記のようになっていました。
strSpltBuff(0) = " 27 0010 @AB_CDEFGH1EQU16;XXXXXXXXXX"
strSpltBuff(1) = " 28 0006 @AB_CDEFGH2EQU6;YYYYYYYYYY"
strSpltBuff(2) = " 29 000A @AB_CDEFGH3EQU1+9;ZZZZZZZZZZ"
また、必要な情報があればご指摘ください。
よろしくお願いします。
No.1
- 回答日時:
VB2005で確認しましたが、タブ文字もちゃんと読み込まれました。
テキストファイルにタブ文字が確実に記録されているか、エンコードが一致しているか、もういちど確認してみてはいかがでしょう?
なお、Visual Studio内でテキストファイルを編集すると、タブ文字が半角スペースに置き換えられてしまう場合があります。
ご回答ありがとうございます。
ご指摘いただいた点、確認しました。
タブ文字が記録されているかについては秀丸エディタにて、
タブ文字の表示を行い確認しました。
エンコードについても同様に秀丸エディタで確認したところ、
「Shift-JIS」となっていましたので問題無いと思います。
もしやと思い、エンコードを「Shift-JIS」と「Shift_JIS」で
試しましたが同様の結果でした。
また、テキストファイルはVisual Studioでは編集しておりません。
他に確認するところなどあれば指摘してもらえればと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- PDF acrobatでwordファイルをpdfに変換すると文字化けする 3 2023/02/10 09:31
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
Excelについて質問です。 セル...
-
エクセルで数値を全角文字(カ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
文字の網掛け設定後段区切りを...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
EXCELからCSVにすると余計なカ...
-
【PHP】""のないCSVを fgetc...
-
Excel VBA: Inputステートメ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りテキストファイル...
-
【VBA】エクセルで値のみクリッ...
-
エクセルの区切り位置の設定方法
-
エクセルにペーストする際にカ...
-
VBAでtxtファイルを読み込む際...
-
特定の文字を削除したい
-
VBScript 日付の比較について
-
エクセルで電話番号を取り出す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
マクロを使ってフォルダー内に...
-
EXCELからCSVにすると余計なカ...
-
Excelについて質問です。 セル...
-
CSVの定義
-
[VBA][Excel]クリップボードか...
-
WORDで改ページすると時々グレ...
-
カンマ区切りの数字をCSVフ...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
VBAでtxtファイルを読み込む際...
-
カンマ区切り
-
VB2005のTextBoxでカン...
-
メモ帳からエクセルにセル区切...
-
JPY ¥1,500.00は日本円でお幾ら?
-
テキストファイルからReadLine...
-
カンマ区切りでないテキストをc...
-
エクセルにペーストする際にカ...
-
パス区切りの文字について
おすすめ情報