テキストファイルにデータを保存しているのですが、区切り文字タブ\tはフィールドの区切りに使っています。
その状態で、仮に1つのフィールドにデータを詰め込む場合、,(カンマ)で区切った場合にデータ自体に金額の,があった場合、誤動作します。フィールドの区切りはタブ\tは普通ですが、1つのフィールドに複数データを持たせる場合の区切り文字は\0など使っても問題ないのでしょうか?
環境はWindows, Linux両方で使います。\0を使ってそれが文字列の最後とまた誤動作しても嫌です。
皆さんは\t以外にテキストデータの区切りにどのような制御文字を使っていますか?ちなみに改行は1レコードの区切り文字です。
No.3ベストアンサー
- 回答日時:
123\t123,456,789\t456⇒123、(123、456、789)、456
123\t"123,456",789\t456⇒123、(123,456、789)、456
123\t""123"",456,789\t456⇒123、("123"、456、789)、456
と言う感じではどうでしょう?
なお、\0は最強にして最悪です。1レコード(1行)単位で扱う場合に確実にバグを産みます。
どんなバグでしょうか?
現在、\0で問題なく動いていますが、バグに遭遇していないだけかもしれませんので、教えていただけましたら幸いです。
No.4
- 回答日時:
最強なのは、\0や\tなどの特定の文字ではありません。
ある定義した方法によってエスケープすることこそが最強であり、やるべきことだと思います。エスケープしないと、「ある文字はデータの中で決して使ってはならない」というような、uglyな約束事ができてしまいます。例えば\0を区切りにするならば、\0を含むデータは扱えなくなりますよね。カンマでもタブでも同じです。
きちんとエスケープすれば、基本的にあらゆるデータを格納できるようになります。これぞ最強。
No.2
- 回答日時:
(1)複数データもフィールドに分割する。
(本来これが正しい姿かと思いますが。)(2)""で囲んだ文字は文字列として認識させることで、""でくるんでいない,を区切り文字とする。
(3)他に;とか:を区切り文字として使用する。(これでも文字列として使いたければ、,と同じ問題が出ます。)
(4)エスケープ文字を認識させる。例えば\の後の制御文字は単なる文字と認識させて、\の付いていない制御文字を制御文字とさせる。
自信がありませんが、一般的にはこんな感じかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- Excel(エクセル) ExcelデータのMacとWindowsの文字化け対策について教えてください‼︎ 私はMacを使って 1 2022/08/22 12:46
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
メッセージボックスの数字をカ...
-
何故、日本は未だに数字を3桁...
-
VBAで指定した「文字数」だけ切...
-
C#で、テキストボックスの入力...
-
(エクセル)特定のスペースを...
-
データにカンマが入ったCSVデー...
-
CSVの定義
-
Excel 2002 をtxt形式にして書...
-
PHP カンマをエスケープしたい...
-
MSワードからエクセルへの文書...
-
JPY ¥1,500.00は日本円でお幾ら?
-
マクロを使ってフォルダー内に...
-
VBAでtxtファイルを読み込む際...
-
エクセルで数値を全角文字(カ...
-
数字が全角、コンマなし
-
文字列末尾のスペースを切り捨...
-
パス区切りの文字について
-
章句って何ですか? しょうく?
-
Perl テキスト 列検索
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
何故、日本は未だに数字を3桁...
-
データにカンマが入ったCSVデー...
-
3桁ごと?4桁ごと?コンマの...
-
[VBA][Excel]クリップボードか...
-
カンマ区切り
-
VBAでtxtファイルを読み込む際...
-
「カンマ」と「コンマ」は同じ...
-
メモ帳からエクセルにセル区切...
-
パス区切りの文字について
-
EXCELの文字が指数になる
-
C#で、テキストボックスの入力...
-
PHP カンマをエスケープしたい...
-
カンマ区切りでないテキストをc...
おすすめ情報