SwiftUI沼でゆっくり浸る Stringから正規表現で抽出する

こんにちは、川上です。
以前分の
”
Loadした郵便番号Zipを解凍したCSVデータをRAM上のベタStringから展開”から1行毎のString配列の作成する件です。
”
で、さの件の
”
// MARK: == UnZipした1本のcsvのstringをArry化にする
return oneData2AddLineStrArry(onecsvstr)
は、ベタで取得したCSVStringデータを1行分Arryにして、
その後、detail-viewの表示用Arryの作成をするのでした。
”
からの続きです。
北海道分のZipを解凍したベタStringを見ると。
01101,"060 ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道","札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0 01101,"064 ","0640941","ホッカイドウ","サッポロシチュウオウク","アサヒガオカ","北海道","札幌市中央区","旭ケ丘",0,0,1,0,0,0 ・・・
で、このベタベタTextから、”0941″より、”0640941”を抽出を正規表現で書くと
"[0-9]{3}0941"
で、抽出をテストしてみると
北海道 0640941 0420941
ちなみに、宮城県や栃木県等のデータから抽出してみると。。。
宮城県: 9810941 栃木県: 3210941
で、正規表現で汎用に抽出できていたのでした。
でもって、1行分毎のArryを抽出してみたのは、
func oneData2AddLineStrArry(_ getdatastr:String) -> [String] { var compArry:[String] = [] // 正規文字 ・・・ 1行分の文字列 let ptnstr = "[0-9]{5}.*[01],[01]" var ans: [String] = [] if getdatastr.pregMatche(pattern: ptnstr, matches: &ans) { print("🟦 マッチしました") for ansstr in ans { let linestr = ansstr compArry.append(linestr) } } else { print("== 🟥 マッチしていません") } print("compArry.count=\(compArry.count)") return compArry }
if getdatastr.pregMatche(pattern: ptnstr, matches: &ans)
は、正規表現で使ったStringのextension の関数を追加して使用したのでした。
コマゴマでちびりちびりして、次回へと続くのでした。。
ではでは。。