Swift에서 Int를 문자열로 변환


554

나는 캐스팅하는 방법을 해결하기 위해 노력하고있어 IntString스위프트에.

나는 해결 방법을 사용 NSNumber하지만 Swift에서 모든 것을 수행하는 방법을 알고 싶습니다.

let x : Int = 45
let xNSNumber = x as NSNumber
let xString : String = xNSNumber.stringValue

답변:


961

변환 IntString:

let x : Int = 42
var myString = String(x)

그리고 주변의 다른 방법 - 변환 String합니다 Int:

let myString : String = "42"
let x: Int? = myString.toInt()

if (x != nil) {
    // Successfully converted String to Int
}

또는 Swift 2 또는 3을 사용하는 경우

let x: Int? = Int(myString)

2
이것이 작동하는 동안 toString아래 답변에 표시된 기능을 사용하십시오 .
ybakos

2
Int이 표시되지 않습니다 toString()나는 세계가 있다는 것을 참조 : 엑스 코드 6.2 편집하지 적어도 방법 toString방법 ( 하지 Int.toString() ), 누군가가 사용을 통해 장점을 알고 String()생성자를?
Nilloc

참고 것을 String(Int?)쓰기는 "선택 사항 (INT)", 스위프트 2, 적어도 당신이 무슨 뜻인지 할 수 없음. 대신 사용Int?.description
Teejay

훌륭하지만 저에게는 효과가 없습니다. 선택적 Int가 있고 String (myInt)이 컴파일하지 않습니다. "Int?를 String으로 변환 할 수 없습니다"라고 주장합니다. 사용할 수있는 toString () 또는 toInt () 메소드가 없거나 stringValue 및 intValue가 없습니다. String (myInt!)조차도 초기화 프로그램의 이름이 String (decribing : myInt!)으로 바뀌 었다고 알려줍니다.
Motti Shneor

9
스위프트 4의 경우 아래의 Hamed Gh의 답변을 참조하십시오. 올바른 사용법은 다음과 같습니다String(describing: x)
David Gay

92

아래 답변을 확인하십시오.

let x : Int = 45
var stringValue = "\(x)"
print(stringValue)

45
meh, 이것은 String이미 생성자를 받아 들일 때 못생긴 불필요한 해결 방법입니다.Int
Gabriele Petronella

3
이게 무슨 잘못이야? 왜 당신은 투표를 내려? @GabrielePetronella
PREMKUMAR

2
원하는 결과를 얻는 끔찍한 방법입니다. 그러나 그 대답은 기술적으로 정확하기 때문에 나는 공감하지 않았다.
Gabriele Petronella

일부 구문 분석 도구가 문자열 보간을 잘 처리하지 못할 수 있다는 점을 제외하고는 이것이 특히 추악하다고 생각하지 않습니다. 그렇지 않으면 누가 아는가-더 빠를 수도 있습니다. 예를 들어 Javascript에서 ""+ x를 사용하는 것이 일반적으로 String 생성자를 사용하는 것보다 빠릅니다. 이 예제는 몇 문자 만 짧지 만 여러 변수로 문장을 구성하는 경우 문자열 보간을 선호합니다.
Desty

1
이 답변은 추악하지만 @GabrielePetronella가 말했듯 StringInt. 훨씬 더 명확하고 간결합니다.
Isuru

58

4 가지 방법이 있습니다 :

var x = 34
var s = String(x)
var ss = "\(x)"
var sss = toString(x)
var ssss = x.description

일부 사람들은 ss에 문제가 있다고 상상할 수 있습니다. 그러나 다른 내용이 포함 된 문자열을 작성하려는 경우 왜 그렇지 않습니까?


5
Swift와 iOS 8에 대한 Stanford U의 새로운 코스를 보았습니다. var ss = "\(x)"예를 들어 이중을 문자열로 변환하는 방법을 정확하게 설명했습니다. 나는 쉽고 쉽다고 생각했다.
markhunte

그리고 sass에 대해 더 많이 생각하면 정말 나쁩니다.
Ian Bradbury

2
toString의 이름이 String
Jirson Tavera

1
s는 이제 (Swift 3.1) String (describing : x)입니다. 이전 구문에서는 컴파일러 오류가 발생합니다.
Motti Shneor

3
@MottiShneor 아니요, 잘못되었습니다. String(describing:)디버깅 이외의 다른 용도로 사용해서는 안됩니다. 일반적인 문자열 초기화 프로그램이 아닙니다.
Eric Aya

55

스위프트 3.0에서 :

var value: Int = 10
var string = String(describing: value)

7
이것은 잘못이다. String(describing:)디버깅 이외의 다른 용도로 사용해서는 안됩니다. 일반적인 문자열 초기화 프로그램이 아닙니다.
Eric Aya

Swift 5에서 여전히 잘못된 것입니까? @ayaio, 문서를 기반으로하는 원인이 잘못 보이지 않습니다
Zonily Jame

27

스위프트 4 :

let x:Int = 45
let str:String = String(describing: x)

Developer.Apple.com> 문자열> init (설명 :)

String (describing :) 이니셜 라이저는 모든 유형의 인스턴스를 문자열로 변환하는 선호되는 방법입니다.

사용자 정의 문자열 변환 가능

여기에 이미지 설명을 입력하십시오


3
결과 옵션 (1)
Harshil Kotecha

11
이것은 잘못이다. String(describing:)디버깅 이외의 다른 용도로 사용해서는 안됩니다. 일반적인 문자열 초기화 프로그램이 아닙니다.
Eric Aya

3
Hamed Gh, Morithz는 이미 동일한 질문에 정답을 제공합니다. 그러나 선택적으로 포장을 풀지 마십시오. 또는 예와 같이 ??를 사용하십시오. 이처럼 : let str = String (x ?? 0)
Harshil Kotecha

2
@HamedGh 자신이 제공하는 링크의 예제를보십시오. 이 describing방법은 내용을 설명 하기 위해 여기에 있습니다. 설명을 제공합니다. 때로는 변환과 동일하지만 때로는 그렇지 않습니다 . 선택 사항을 제공하면 describing결과가 표시됩니다. 전환이 아닙니다. 다른 답변에서 설명한 것처럼 일반 String 이니셜 라이저를 사용하여 변환하는 간단한 전용 방법이 있습니다. 링크 된 전체 페이지를 읽으십시오.이 방법은 다른 방법을 사용하여 설명 을 검색한다는 것을 참조하십시오 . 일부는 정확한 변환을 기대할 경우 결과가 잘못 될 수 있습니다.
Eric Aya

2
이 답변의 설명 부분을 제거해야합니다. String 생성자에서 매개 변수 이름을 사용하지 않고 변환해야합니다.
TimTwoToes

26

완전성을 위해 다음을 사용할 수도 있습니다.

let x = 10.description

또는 설명을 지원하는 다른 값.


5
이것은 레이블에 값을 표시하려고 할 때 효과적이었습니다. 다른 접근 방식에서는 항상 0 대신에 Optional (0)이 사용되었습니다. 감사합니다
Hardcore_Graverobber

11

스위프트 4 :

Optional () 없이 레이블에 값을 표시하려고합니다. 단어 .

여기서 x는 사용하는 Int 값입니다.

let str:String = String(x ?? 0)

3
아니요 String(describing:). 디버깅 이외의 용도로 사용해서는 안됩니다. 일반적인 문자열 초기화 프로그램이 아닙니다.
Eric Aya

안녕하세요 @Moritz 그래서 선택적 단어를 제거하기 위해 무엇을 할 수 있습니까? 나는 Int 값을 가지고 있고 라벨에 인쇄하고 싶다
Harshil Kotecha

일반 String()이니셜 라이저를 사용하십시오 . 그러나 선택적으로 포장을 풀지 마십시오. 또는 예와 같이을 사용하십시오 ??. : 이것처럼let str = String(x ?? 0)
에릭 아야

developer.apple.com/documentation/swift/string/2427941-init 저는 여러분의 요점을 이해하는 것이 무엇인지 이해합니다
Harshil Kotecha

주로 디버깅 목적입니다. 클래스 이름을 설명하고 인스턴스에 대한 설명 등을 얻을 수 있습니다. 그러나 앱 자체에서 사용되는 문자열에는 사용해서는 안됩니다.
Eric Aya

8

미래에 시간과 번거 로움을 덜기 위해 Int 확장을 만들 수 있습니다. 일반적으로 확장, 열거 및 기타 재미있는 것들을 넣는 공유 코드 파일을 만듭니다. 확장 코드는 다음과 같습니다.

extension Int
{
    func toString() -> String
    {
        var myString = String(self)
        return myString
    }
}

그런 다음 나중에 int를 문자열로 변환하려는 경우 다음과 같이 할 수 있습니다.

var myNumber = 0
var myNumberAsString = myNumber.toString()

잠재적으로 어리석은 질문이지만 함수 또는 계산 된 변수 여야합니까? 그것은이다 - 나는 1 스위프트는 일반적으로 이런 경우에 사용하는 회수 할 수 없습니다 toInt또는 toInt().
Maury Markowitz

1
시간을 절약하고 번거 로움을 피하려면 그냥 사용하십시오 myNumber.description. 확장이 필요 없습니다.
nyg

8

신속 3.0 이것은 우리가 변환 할 수있는 방법입니다 IntStringStringInt

//convert Integer to String in Swift 3.0

let theIntegerValue :Int = 123  // this can be var also
let theStringValue :String = String(theIntegerValue)


//convert String to Integere in Swift 3.0


let stringValue : String = "123"
let integerValue : Int = Int(stringValue)!

1
코드의 마지막 줄에서 왜 끝에 느낌표가 필요한가?
Omar Tariq

@OmarTariq, 우리는 컴파일러에게 integerValue'의 타입이 임을 명시 적으로 알려주기 때문 이다 Int. 그런 다음 nil 값을 가질 수 없습니다. 그래서 컴파일러는 그것을 풀도록 지시합니다. 이것을 피하려면 다음과 같이 사용하십시오 let integerValue = Int(stringValue). 그런 다음 문제가 발생하지 않습니다. 늦은 답변 죄송합니다.
Chanaka Caldera

1
@OmarTariq이 경우 래핑 해제가 실제로 나쁠 수 있습니다. 문자열이 숫자가 아닌 경우 응용 프로그램이 중단됩니다. 실제로 유효한지 확인하고 강제로 풀지 마십시오.
Charlie Fish

7

어떤 이유로 든 받아 들여진 대답이 효과가 없었습니다. 나는이 접근법을 사용했다 :

var myInt:Int = 10
var myString:String = toString(myInt)


4

스위프트 2 :

var num1 = 4
var numString = "56"
var sum2 = String(num1) + numString
var sum3 = Int(numString)

2

이 간단한 접근법을 사용하는 iam

문자열을 Int로 :

 var a = Int()
var string1 = String("1")
a = string1.toInt()

그리고 Int에서 String으로 :

var a = Int()
a = 1
var string1 = String()
 string1= "\(a)"

2

유니 코드 Int를 문자열로 변환

Int를 유니 코드 문자열로 변환하려는 경우 다음을 수행 할 수 있습니다.

let myInteger: Int = 97

// convert Int to a valid UnicodeScalar
guard let myUnicodeScalar = UnicodeScalar(myInteger) else {
    return ""
}

// convert UnicodeScalar to String
let myString = String(myUnicodeScalar)

// results
print(myString) // a

또는 대안으로 :

let myInteger: Int = 97
if let myUnicodeScalar = UnicodeScalar(myInteger) {
    let myString = String(myUnicodeScalar)
}

@ jvarela, 이것은 여전히 ​​작동합니다. 방금 Xcode 8.2 (Swift 3.0.2)에서 다시 테스트했습니다. String초기화가 걸릴 수 있습니다 UnicodeScalar.
Suragch


0

문자열을 Int로 변환하려면

var numberA = Int("10")

Print(numberA) // It will print 10

Int를 문자열로 숨기려면

var numberA = 10

첫 번째 방법)

print("numberA is \(numberA)") // It will print 10

두 번째 방법)

var strSomeNumber = String(numberA)

또는

var strSomeNumber = "\(numberA)"

0
let a =123456888
var str = String(a)

또는

var str = a as! String

두 번째 예는 Int에서 작동하지 않습니다.
John Montgomery

0

swift 3.0에서는 아래와 같이 정수를 문자열로 변경할 수 있습니다

let a:String = String(stringInterpolationSegment: 15)

다른 방법은

let number: Int = 15
let _numberInStringFormate: String = String(number)

// 또는 15 대신 정수


1
API 참조에서 "이 이니셜 라이저를 직접 호출하지 마십시오. 문자열 보간을 해석 할 때 컴파일러에서 사용합니다." 어딘가에 사용하고 있다면 다시 확인하고 싶을 수도 있습니다.
Rahul Sharma

0

문자열 보간을 선호합니다

let x = 45
let string = "\(x)"

각 객체에는 문자열 표현이 있습니다. 이것은 일을 더 단순하게 만듭니다. 예를 들어 String여러 값으로 일부를 작성해야하는 경우 . 당신은 또한 그것에 수학을하거나 일부 조건을 사용할 수 있습니다

let text = "\(count) \(count > 1 ? "items" : "item") in the cart. Sum: $\(sum + shippingPrice)"

0

빠른 확장 기능을 좋아한다면 다음 코드를 추가 할 수 있습니다

extension Int
{
    var string:String {
        get {
            return String(self)
        }
    }
}

그런 다음 방금 추가 한 방법으로 문자열을 얻을 수 있습니다.

var x = 1234
var s = x.string


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.