删除swift中的前导字符和零
我试图从Swift 4中的删除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
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" }