如何对此字符串进行子串?

时间:2017-03-12 17:05:42

标签: swift swift3

如何在certian字符后对字符串的后两个字符进行子字符串。例如,我有一个字符串str1 = "12:34"和其他类似str2 = "12:345的字符串。我希望在:冒号之后获得接下来的2个字符。 我想要一个适用于str1str2的相同代码。

3 个答案:

答案 0 :(得分:1)

Swift的子串很复杂:

let str = "12:345"

if let range = str.range(of: ":") {
    let startIndex = str.index(range.lowerBound, offsetBy: 1)
    let endIndex = str.index(startIndex, offsetBy: 2)
    print(str[startIndex..<endIndex])
}

答案 1 :(得分:0)

使用{em> @MikeHenderson 的答案中显示的str.index()方法非常简单,但是不使用该方法的替代方法是迭代字符串的字符并创建一个用于保存“:”之后的前两个字符的新字符串,如下所示:

var string1="12:458676"
var nr=0
var newString=""
for c in string1.characters{
    if nr>0{
        newString+=String(c)
        nr-=1
    }
    if c==":" {nr=2}
}
print(newString) // prints 45

希望这有帮助!

答案 2 :(得分:0)

可能的解决方案是正则表达式

模式检查冒号后跟两位数,并捕获两位数字:

let string = "12:34"
let pattern = ":(\\d{2})"
let regex = try! NSRegularExpression(pattern: pattern, options: [])
if let match = regex.firstMatch(in: string, range: NSRange(location: 0, length: string.characters.count)) {
    print((string as NSString).substring(with: match.rangeAt(1)))
}