2017-10-28 30 views
-1

저는 Swift4로 코딩하고 있습니다. 포맷 된 숫자를 Int로 변환하는 방법이 있습니까? 계산을하기 위해 형식화 된 숫자의 가치를 얻는 방법?형식 번호의 값을 얻는 방법

let formattedNumber = "12,345,678,910" let newNumber = Int(formattedNumber)*2

+0

* 형식 * 형식화 된 숫자가 채워지는 방식에 따라 달라질 수 있습니다. 우리에게 그 코드를 주려고 신경 써야할까요? – dfd

+0

@dfd 아니요, 제 질문을 더 명확하게하고 싶었습니다. 내 코드에는 쓰레기가 너무 많아서이 정보가 충분히 명확하다고 생각했습니다 –

+3

적절한 해결책은'NumberFormatter'를 사용하여 문자열을 숫자로 변환하는 것입니다. – rmaddy

답변

1

완벽하지.

extension String { 

    var intValue: Int { 

    let removedCharacter = self.characters.map{String($0)}.filter{Int($0) != nil}.joined() 
    print(removedCharacter) 
    if !(removedCharacter.isEmpty) { 
     return Int(removedCharacter)! 
    } 
    return 0 
    } 

    func toInt(multiplyBy : Int) -> String { 

    let formatter = NumberFormatter() 
    formatter.numberStyle = .decimal 
    formatter.groupingSeparator = "," 
    let formattedString = formatter.string(for: intValue * multiplyBy) 
    return formattedString! 

    } 
} 

print("12,345,678,910".toInt(multiplyBy: 2)) 
>> 24,691,357,820 
+0

구문 분석 할 모든 문자열에 항상 쉼표가있는 것으로 알려진 경우가 아니면 그룹화 구분 기호를','로 하드 코딩해서는 안됩니다. 그것은 모두 원래 형식화 된 문자열이 생성되는 방식에 따라 다릅니다. – rmaddy

1

는 먼저 쉼표를 제거해야합니다

let number = formattedNumber.replacingOccurrences(of: ",", with: "") 
let newNumber = Int(number)! * 2 
+0

'Int (number)'에 대한 검사를 추가하십시오. –