2016-12-17 1 views
0

여기에 10 진수를 가져 오는 데 문제가 있습니다. 이 코드를 사용해 보았지만 결과는 9.0입니다. 어떻게 얻을 수 있습니까?문자열에서 10 진수 얻기

let distances = "0.9 mil"  
let stratr = distances.characters.split{$0 == " "}.map(String.init) 
       for item in stratr { 
        let components = item.components(separatedBy: NSCharacterSet.decimalDigits.inverted) 
        let part = components.joined(separator: "") 

        if let doubVal = Double(part) { 
         print("this is a number -> \(doubVal)") 
        } 

답변

0

공백 문자로 문자열을 분리 한 다음 첫 번째 구성 요소를 사용하여 플로트를 초기화 할 수 있습니다.

let str = "0.9 mil" 
let decimal = str.components(separatedBy: " ").first.flatMap { Float($0) } 

print(decimal) // 0.9 
+1

@Callam보다 사용하기가 쉽습니다. – AlbertWu

1

String 구조체는 주어진 CharacterSet에 기초하여 문자를 제거하는 데 사용할 수있는 인스턴스의 방법을 제공한다. 이 경우 letterswhitespaces 문자 집합을 사용하여 10 진수 값을 분리 한 다음 Decimal을 생성 할 수 있습니다.

let distances = "0.9 mil" 

let decimal = Decimal(string: distances.trimmingCharacters(in: CharacterSet.letters.union(.whitespaces))) 

if let decimal = decimal { 
    print(decimal) // Prints 0.9 
}