删除swift中的前导字符和零

删除swift中的前导字符和零,swift,Swift,我试图从Swift 4中的string中删除一些字符,并说:我有 QC00012345,返回12345 QC00009876,返回9876 QC12345678,返回12345678 删除前两个字符和前导零 我在这里环顾四周,人们只是先使用dropFirst然后再转换 String转换为Int,然后将其转换回String 有更好的方法吗?您可以使用正则表达式和dropFirst: let str = "QC00009876" let clean = str.dropFirst(2).replac

我试图从Swift 4中的
string
中删除一些字符,并说:我有

QC00012345
,返回
12345

QC00009876
,返回
9876

QC12345678
,返回
12345678

删除前两个字符和前导零

我在这里环顾四周,人们只是先使用
dropFirst
然后再转换
String
转换为
Int
,然后将其转换回
String


有更好的方法吗?

您可以使用正则表达式和
dropFirst

let str = "QC00009876"
let clean = str.dropFirst(2).replacingOccurrences(of: "^0*", with: "", options: .regularExpression)
表达式
^0*
表示“字符串开头有零个或多个
0
字符”

或者仅使用正则表达式:

let str = "QC00009876"
let clean = str.replacingOccurrences(of: "^..0*", with: "", options: .regularExpression)

表达式
^..0*
表示“字符串开头的任意两个字符后跟零个或多个
0
字符”。

您只需使用
drop(while:)


如果不想手动删除前两个字符,还可以创建一个
ClosedRange
,并将其用作谓词:

let num = test.drop { !("1"..."9" ~= $0) }
print(num)   //  12345
或者检查1到9之间的字符串是否不包含以下字符:

let num = test.drop { !"123456789".contains($0) }
编辑/更新:

Swift 5或更高版本

使用Character属性

let num = test.drop { !"123456789".contains($0) }
let num = test.drop { !$0.isWholeNumber || $0 == "0" }