いつもお世話になります。
String
で保持している数値の小数点以下の不要となる0
を取り除きたいのですが、良い方法ご存知でしたら教えて下さい。
現状、いったんDouble
にしてからString
に戻しているので面倒くさいので、String(format: )
での0埋めの逆のような処理はないのかと思いまして。
swift
1func removeZero(_ str: String) -> String { 2 3 // 整数部分のの文字列にだけ処理をかけるので小数部分をもつものを持たないもので処理を分岐 4 5 if let d: String.Index = str.firstIndex(of: ".") { 6 // 小数部分が存在する場合の処理 7 8 let s: String.Index = str.startIndex 9 let e: String.Index = str.endIndex 10 11 // 整数部分を取り出す 12 13 let tmpIntStr: String = String(str[s ..< d]) 14 let intStr: String = String(Int(tmpIntStr) ?? 0) 15 16 // 整数部分に対して変換処理をする(略) 17 18 // 小数部分を取り出す 19 let deciDouble: Double = Double(String(str[d ..< e])) ?? 0.0 20 let tmpStr: String = String(String(deciDouble).dropFirst()) 21 let deciStr: String = tmpStr == ".0" ? "" : tmpStr 22 23 24 return intStr + deciStr 25 26 } else { 27 // 小数部分がない場合の処理 28 29 // 整数部分に対して変換処理をする(略) 30 return String(Int(str) ?? 0) 31 } 32} 33 34print(removeZero("12.34000")) //=> 12.34 35print(removeZero("-12.00")) // => -12 36print(removeZero("0.00")) // => 0 37print(removeZero("000.0000")) // => 0 38print(removeZero("0000")) // => 0 39 40
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。