2017-08-17 13 views
0

"9904962"のような文字列がたくさんあります& "57053717" CLLocationDegreesに変換してCLLocationオブジェクトを作成する必要があります。セパレータなしの文字列をDouble/CLLocationDegreesに変換します

問題はカンマ/句読記号がありません。私は、文字カウントを行い、このような句読点を設定することができ

var coordinateString = "57053717" 

let offset = coordinateString.characters.count > 7 ? 2 : 1 

coordinateString.insert(".", at: coordinateString.index(coordinateString.startIndex, offsetBy: offset)) 

その後、私のcoordinateStringは「57.053717」または「9.904962」

だろう。しかし、私はこれがベストだとは思いませんこれは、元の文字列が7文字より長いか短い文字列の場合にのみ適用されます。

より良い解決策は何ですか?

+0

小数部の桁数は常に6ですか? _no_の場合は、指定されたStringで '57.053717'と' 5.7053717'を区別できません。 – OOPer

+2

彼らは常に6桁の精度を持っている場合、ちょうどあなたの文字列からダブルを作成し、100万で割る –

+0

データを見て、それは常に6桁の精度があるようですが、座標はこの長い57.05381847826012可能性があります。百万分の1で割るか、小数部分を6文字で区別することはできません。 – TSkovsgaard

答えて

0

Swift3.0

let numberString: NSMutableString = "57053717" // Convert string to MutableString 

let offset = numberString.characters.count > 7 ? 2 : 1 // finding offset value 

numberString.insert(".", at: offset) // insert "." in offset index 
print(numberString) 

let doubled = numberString.doubleValue // convert to double vale 
print(doubled) 

出力:57.053717

関連する問題