在Swift中将Int转换为String

Ste*_*all 532 string int casting converter swift

我正试图找出如何在Swift中Int投入一个String.

我想出了一个解决方法,使用NSNumber但我想知道如何在Swift中完成所有操作.

let x : Int = 45
let xNSNumber = x as NSNumber
let xString : String = xNSNumber.stringValue
Run Code Online (Sandbox Code Playgroud)

Sha*_*hai 926

转换IntString:

let x : Int = 42
var myString = String(x)
Run Code Online (Sandbox Code Playgroud)

反过来 - 转换StringInt:

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

if (x != nil) {
    // Successfully converted String to Int
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是Swift 2或3:

let x: Int? = Int(myString)
Run Code Online (Sandbox Code Playgroud)

  • 对于Swift 4,请参阅下面的Hamed Gh的答案.正确的用法是`String(describe:x)` (8认同)
  • 虽然这有效,但使用`toString`函数,如下面的答案所示. (2认同)
  • 至少在Xcode 6.2编辑中,`Int`似乎没有`toString()`方法:我看到有一个全局的`toString`方法(***不是***`Int.toString()` ),有人知道使用`String()`构造函数的好处吗? (2认同)

PRE*_*MAR 92

检查下面的答案:

let x : Int = 45
var stringValue = "\(x)"
print(stringValue)
Run Code Online (Sandbox Code Playgroud)

  • 嗯,当`String`已经有一个接受`Int`的构造函数时,这是一个丑陋且不必要的解决方法 (43认同)
  • 你觉得这有什么不对?为什么你放下投票?@GabrielePetronella (3认同)
  • 这只是获得理想结果的一种糟糕方法。从技术上来说,答案是正确的,因此,我没有投票。 (2认同)

Ian*_*ury 55

这里有4种方法:

var x = 34
var s = String(x)
var ss = "\(x)"
var sss = toString(x)
var ssss = x.description
Run Code Online (Sandbox Code Playgroud)

我可以想象有些人会遇到ss的问题.但是如果你想构建一个包含其他内容的字符串,那么为什么不呢.

  • 我只是在Swift和iOS 8上看一些斯坦福大学的新课程.你的`var ss ="\(x)"`的例子就是他们建议将双精度转换成字符串的方式.我认为这很简单. (5认同)
  • toString 已重命名为 String (2认同)
  • @MottiShneor不,这是错的.`String(describe :)不应该用于调试以外的任何其他东西.它不是普通的String初始值设定项. (2认同)

vla*_*dan 55

在Swift 3.0中:

var value: Int = 10
var string = String(describing: value)
Run Code Online (Sandbox Code Playgroud)

  • 这是错的.`String(describe :)不应该用于调试以外的任何其他东西.它不是普通的String初始值设定项. (7认同)

Ham*_*ian 27

斯威夫特4:

let x:Int = 45
let str:String = String(describing: x)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 Developer.Apple.com> String> init(描述:)

String(描述:)初始化程序是将任何类型的实例转换为字符串的首选方法.

developer.apple.com

  • 这是错的.`String(describe :)不应该用于调试以外的任何其他东西.它不是普通的String初始值设定项. (10认同)
  • 结果可选(1) (3认同)
  • Hamed Gh,Morithz已在同一问题中提供正确答案检查我的答案只需使用普通的String()初始化程序.但是不要先给它一个可选的解包.或者,在您的示例中,使用??.像这样:让str = String(x ?? 0) (3认同)
  • @HamedGh查看您给自己的链接中的示例。描述方法在这里用来描述其内容。它给出了描述。有时与转换相同,有时不相同。给`describing`一个可选项,您将看到结果……这将不是转换。有一种简单的专用转换方式:使用普通的String初始值设定项,如其他答案所述。阅读您链接到的完整页面:请参见此方法使用不同的方式搜索*说明*,如果您期望准确的转换,其中的某些方法将给出错误的结果。 (2认同)
  • 您确实应该删除此答案的描述部分。不应在String构造函数中使用任何参数名称的情况下进行转换。 (2认同)

Mik*_*hke 26

为了完整起见,您还可以使用:

let x = 10.description
Run Code Online (Sandbox Code Playgroud)

或任何其他支持描述的值.

  • 当我试图在标签中显示价值时,这对我有用.使用其他方法,它总是可选(0)而不是0.谢谢 (5认同)

Har*_*cha 12

斯威夫特4:

尝试在没有Optional()字的情况下显示标签中的值.

这里x是使用的Int值.

let str:String = String(x ?? 0)
Run Code Online (Sandbox Code Playgroud)

  • 不可以.`字符串(描述:)不应该用于除调试之外的任何其他事情.它不是普通的String初始值设定项. (3认同)

小智 8

为了节省您自己的时间和麻烦,您可以进行Int扩展.通常我会创建一个共享代码文件,我在其中放置扩展,枚举和其他有趣的东西.这是扩展代码的样子:

extension Int
{
    func toString() -> String
    {
        var myString = String(self)
        return myString
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,当您想要将int转换为字符串时,您可以执行以下操作:

var myNumber = 0
var myNumberAsString = myNumber.toString()
Run Code Online (Sandbox Code Playgroud)


bko*_*opp 7

无论出于何种原因,接受的答案对我都不起作用.我采用这种方法:

var myInt:Int = 10
var myString:String = toString(myInt)
Run Code Online (Sandbox Code Playgroud)


Cha*_*era 7

SWIFT 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)!
Run Code Online (Sandbox Code Playgroud)


Roi*_*kai 7

let intAsString = 45.description     // "45"
let stringAsInt = Int("45")          // 45
Run Code Online (Sandbox Code Playgroud)


yoA*_*ex5 6

Swift 字符串性能

UI Testing Bundle关于运行 iOS 14 的 iPhone 7(真实设备)上的性能的一些信息

let i = 0
lt result1 = String(i) //0.56s 5890kB
lt result2 = "\(i)" //0.624s 5900kB
lt result3 = i.description //0.758s 5890kB
Run Code Online (Sandbox Code Playgroud)
import XCTest

class ConvertIntToStringTests: XCTestCase {
    let count = 1_000_000
    
    func measureFunction(_ block: () -> Void) {
        let metrics: [XCTMetric] = [
            XCTClockMetric(),
            XCTMemoryMetric()
        ]
        let measureOptions = XCTMeasureOptions.default
        measureOptions.iterationCount = 5
        
        measure(metrics: metrics, options: measureOptions) {
            block()
        }
    }

    func testIntToStringConstructor() {
        var result = ""
        measureFunction {
            for i in 0...count {
                result += String(i)
            }
        }
    }
    
    func testIntToStringInterpolation() {
        var result = ""
        measureFunction {
            for i in 0...count {
                result += "\(i)"
            }
        }
    }
    
    func testIntToStringDescription() {
        var result = ""
        measureFunction {
            for i in 0...count {
                result += i.description
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Dhr*_*ani 5

多种方法:

var str1:String="\(23)"
var str2:String=String(format:"%d",234)
Run Code Online (Sandbox Code Playgroud)


小智 5

斯威夫特2:

var num1 = 4
var numString = "56"
var sum2 = String(num1) + numString
var sum3 = Int(numString)
Run Code Online (Sandbox Code Playgroud)