Swift 如何在特殊字符后获取字符串中的值
我需要在字符之前删除字符串中的一些数据 我需要在串之前把号码撕掉Swift 如何在特殊字符后获取字符串中的值,swift,regex,split,Swift,Regex,Split,我需要在字符之前删除字符串中的一些数据 我需要在串之前把号码撕掉 var str= "123456Z789456123" // output: Z789456123 var str= "123456K789456123" // output: K789456123 var str= "1234U789456123" // output: U789456123 var str= "123456909D789456123" // output:
var str= "123456Z789456123" // output: Z789456123
var str= "123456K789456123" // output: K789456123
var str= "1234U789456123" // output: U789456123
var str= "123456909D789456123" // output: D789456123
我无法找到此问题的解决方案。还有两个选项: 扫描器 用于搜索第一个非数字字符的正则表达式
let str = "123456Z789456123"
let range = str.range(of: "\\D", options: .regularExpression)!
let output = str[range.lowerBound...]
变量str=123456Z789456123
让characterSet=CharacterSetcharactersIn:ZKUD
让firstIndex=str.firstIndex{characterSet.包含$0.0.0 Descalars.first!}
设substr=str[firstIndex!…]
或使用扩展名:
var str=123456Z789456123//输出:Z789456123
扩展字符串{
func stripbefore characterSet:characterSet->String{
如果让firstIndex=self.firstIndexwhere:{characterSet.contains$0.0.0.0$Descalars.first!}{
返回Stringself[firstIndex…]
}
回归自我
}
func stripBeforeLetters->String{
在以下字母之前返回:
}
}
让substr=str.stripbefore:CharacterSetcharactersIn:ZKUD
让另一个substr=str.stripBeforeLetters
以下是一条简洁的单行线:
let subStr = String(str.drop { $0.isNumber })
通过检查或字符属性,可以从字符串的开头开始输入字符,只要它们是数字。非常好。但在iOS 13.0中,ScanupCharactersFrom:into:和ScanupCharactersFrom:into:将被弃用。在iOS 13中,它变得更方便:删除变量输出:NSString?并更改scanner.scanupCharactersFrom:。字母并让输出=scanner.scanupCharactersFrom:。alphanumerics请注意,isNumber将允许以下字符:⅚ 这可能不是我们所期望的OP@LeoDabus因此,提出了.isWholeNumber替代方案。无论如何,这只是一个边缘案例,我想这不是问题的一部分。
let subStr = String(str.drop { $0.isNumber })