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 })