##前提・実現したいこと
文字列から1byte表記と2byte表記16進数の数値を取り出したいです。
コードは書いたのですが、なんだか冗長な気がしています。
もしより良い書き方が浮かんだ方いましたら教えていただけると嬉しいです。
##具体的な例
例えば、2019年11月13日を
2019,11,13に分けて表記すると、
Swift
1// 2019年11月13日の16進数文字列表記 2StringData: String = "07E30B0D"
となります。
ここから年月日それぞれの要素を取り出したいです。
また、例なので最初のみ2byte、以降1byteのみですが、
そうでない場合も想定していただけると助かります。
(今回のように、予めどの順で入っているかは把握できるものとします)
##現在のコード
Swift
1let StringData: String = "07E30B0D" 2var tmpStr: String = "" 3var year: UInt = 0 4var month: UInt = 0 5var day: UInt = 0 6 7for (n,char) in StringData.enumerated(){ 8 tmpStr.append(char) 9 switch n { 10 case 3: 11 year = UInt(tmpStr, radix: 16)! 12 tmpStr = "" 13 break 14 case 5: 15 month = UInt(tmpStr, radix: 16)! 16 tmpStr = "" 17 break 18 case 7: 19 day = UInt(tmpStr, radix: 16)! 20 tmpStr = "" 21 break 22 default: 23 break 24 } 25} 26 27print("year = (year)") 28print("month = (month)") 29print("day = (day)")
皆さまのお力添えお待ちしています。
##使っているツールのバージョンなど補足情報
Swift 5.0
Xcode 11.0
iOS 12.3
MacOS Mojave 10.14.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/13 04:12
2019/11/13 04:17
2019/11/13 04:24