空白の列を左に埋めるプログラムを作っています。
そこで、下記の様な文字列があったとします。
左から4番目の「d」に当たる縦の1列の文字列(カンマ)を削除したいと考えています。
縦一列全てカンマの場合削除したいので、列は複数の場合もあります。
どの様なコードを書けば実現できるでしょうか?
var str = " A , , , e , , \n A b , , , f g \n , b c , e , g \n A b , , e f g \n "
↓期待する結果
var str = " A , , e , , \n A b , , f g \n , b c e , g \n A b , e f g \n "
追記: 例題をわかりやすくする為にアルファベットを使用していますが、アルファベットの部分はランダムに文字が入ります。
要は何も文字が入っていない列を削除したいと思っています。
文字列を一度配列にして、空の配列を削除するなどでできそうなのが、具体的なコードのイメージができていません。
考えても思いつかなかった為ご質問しました。
よろしくお願いします。
質問とは関係ありませんが、CSVを自力でパースするのは素人にできるものではありません。
信頼できるCSVパーサを利用してください。
(私はCSVは危険すぎるのでCSVは扱いません。ですので信頼できるCSVパーサを知りません)
また「Swift CSV」で検索してみましたが正しくパースを行っている記事は皆無でしたので、日本語で書かれたSwiftでのCSVのパースに関する記事はすべて誤りだと思ってください。
ただしご自身が制限されたCSVの仕様を用意しその仕様のCSVしか扱わないのであれば危険性を認識した上でその仕様に合致したCSVを利用するのは問題ないと思います。
コメントありがとうございます。
認識が足りていなく申し訳無いのですが、CSVが危険というのはどういった意味で危険なのでしょうか。
現在は単純にカンマで区切ったデータをCSVファイルとして書き出しを行っているだけとなります。
よろしくお願いいたします。
例えば
"a", "b, c, d\ne, f", g
このような内容のCSVがあった場合
"a" | "b | c | d [改行]
e | f" | g
とパースするのは誤りで
a | b, c, d\ne, f | g
とパースしなければなりません。(|をセパレータとして表記しています)
"で囲まれた文字列には,および改行を含めることが可能です。
またCSVには様々な亜種が存在あり、CSVを作成する人のほとんどは自分の知っている書式が正しいCSVだと信じています。
そのためあるCSVは扱えるのに別のCSVは扱えないという問題が発生することがしばしばあります。
パースの難しさ、独自に拡張されるなど互換性のない多種にわたる仕様がCSVの危険性です
内容の方を理解しました。
ありがとうございます。
誤解を招きそうなので、CSVという表現は質問内から削除させていただきました。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー