我想将Swift中的int
转换为前导为0的string
。例如,考虑以下代码:
for myInt in 1 ... 3 {
print("\(myInt)")
}
目前的结果是:
1
2
3
但我希望它是:
01
02
03
在Swift标准库中有没有一种干净的方法来实现这一点?
使用Swift5,您可以从下面所示的三个示例中选择一个来解决您的问题。
基础
提供了快速字符串
一个初始化器(格式:_:)
初始化器。init(format:_:)
具有以下声明:
init(format: String, _ arguments: CVarArg...)
返回一个string
对象,该对象使用给定的格式字符串作为模板初始化,其余的参数值被替换到该模板中。
下面的游乐场代码显示了如何使用init(format:_:)
创建一个字符串
,该字符串由int
格式化,至少包含两个整数数字:
import Foundation
let string0 = String(format: "%02d", 0) // returns "00"
let string1 = String(format: "%02d", 1) // returns "01"
let string2 = String(format: "%02d", 10) // returns "10"
let string3 = String(format: "%02d", 100) // returns "100"
Foundation
提供了快速String
一个init(format:arguments:)
初始值设定项。init(format:arguments:)
具有以下声明:
init(format: String, arguments: [CVarArg])
返回一个string
对象,该对象使用给定的格式字符串作为模板初始化,剩余的参数值将根据用户的默认区域设置替换到该模板中。
下面的游乐场代码显示了如何使用init(format:arguments:)
创建一个字符串
,该字符串由int
格式化,至少包含两个整数数字:
import Foundation
let string0 = String(format: "%02d", arguments: [0]) // returns "00"
let string1 = String(format: "%02d", arguments: [1]) // returns "01"
let string2 = String(format: "%02d", arguments: [10]) // returns "10"
let string3 = String(format: "%02d", arguments: [100]) // returns "100"
Foundation提供NumberFormatter
。苹果公司对此表示:
nsnumberformatter
的实例设置包含nsnumber
对象的单元格的文本表示形式的格式,并将数值的文本表示形式转换为nsnumber
对象。表示形式包括整数、浮点和双值;可以将浮点和双点的格式设置为指定的小数位置。
下面的游乐场代码显示了如何创建NumberFormatter
,该NumberFormatter
从至少有两个整数的Int
返回字符串:
import Foundation
let formatter = NumberFormatter()
formatter.minimumIntegerDigits = 2
let optionalString0 = formatter.string(from: 0) // returns Optional("00")
let optionalString1 = formatter.string(from: 1) // returns Optional("01")
let optionalString2 = formatter.string(from: 10) // returns Optional("10")
let optionalString3 = formatter.string(from: 100) // returns Optional("100")
假设您希望字段长度为2且前导为0,您可以这样做:
import Foundation
for myInt in 1 ... 3 {
print(String(format: "%02d", myInt))
}
输出:
01
02
03
这需要import foundation
,所以从技术上来说,它不是Swift语言的一部分,而是foundation
框架提供的一种功能。请注意,import UIKit
和import Cocoa
都包含Foundation
,因此,如果您已经导入了Cocoa
或UIKit
,则无需再次导入。
格式字符串可以指定多个项目的格式。例如,如果您试图将3
小时、15
分钟和7
秒格式化为03:15:07
,您可以这样做:
let hours = 3
let minutes = 15
let seconds = 7
print(String(format: "%02d:%02d:%02d", hours, minutes, seconds))
输出:
03:15:07
问题内容: 我想将Swift中的a 转换为前导零的a。例如,考虑以下代码: 当前的结果是: 但我希望它是: Swift标准库中是否有一种干净的方法可以做到这一点? 问题答案: 假设您希望字段长度为2,且前导零为零,则可以这样做: 输出: 这需要因此从技术上讲不是斯威夫特语言的一部分,而是由提供的功能框架。请注意这两个和包括因此没有必要再次导入它,如果你已导入或。 格式字符串可以指定多个项目的格式。
我试图验证输入,这样用户只允许输入一个有9位数字的int。我当前的代码负责前导零,任何大于9位的输入,但如果小于9位则不负责。 例如,它不应该允许用户输入int 123。 如果数字大于9,下面的代码将验证数字输入,但不考虑小于9的数字。 如果用户输入的整数小于9位。由于字符串的原因,它将填充剩余的插槽,并使其成为9位数字。格式(我只包含这个,以便它适用于前导零)。我不知道如何绕过前导零,以及确保输
问题内容: 我需要从连接为“ field1-field2”的数据库中返回两个字段。第二个字段是一个int,但需要以固定长度5(前导0)返回。我正在使用的方法是: 有没有更有效的方法可以做到这一点? 问题答案: 大致就是这样:将前导零添加到整数值 因此,为了保存链接,查询看起来像这样,其中表和列在哪里: 负值或正值
问题内容: 下面是一段代码,它是功能解密和加密程序的一部分。 如您所见,两个变量i和j首先被视为字符串,以便在任何一位数字前添加一个0(作为字符串)。然后将这些变量组合成一个四位数的数字(仍为字符串)。在程序的后面,在函数中使用创建的数字,因为s删除所有前导零。 我的问题:是否可以强制python保持s的前导零?我已经并且继续在线搜索。 编辑 为了帮助人们,我将程序的加密部分包括在内。这就是问题所
问题内容: 我正在尝试找出如何在Swift中将转换为。 我想出一种解决方法,但是我很想弄清楚如何在Swift中做到这一点。 问题答案: 转换为: 而另一种方式-转换为: 或者,如果您使用的是Swift 2或3:
问题内容: 我想将转换成斯威夫特。像这样的基本转换不起作用,因为这些类型不是基元,这与Objective-C中的s和s 不同 但这会产生以下错误消息: “浮点数”不可转换为“整数” 知道如何将属性从转换为吗? 问题答案: 您可以转换到斯威夫特这样的: 您还可以使用@paulm的注释来实现此结果: