2017-03-12 131 views
-5

如何在字符串之后对字符串的下两个字符进行子串处理。例如我有一个字符串str1 = "12:34"和其他像str2 = "12:345。我想在冒号:之后得到下2个字符。 我想要一个适用于str1str2的相同代码。我怎样才能子串字符串?

+2

的[如何在夫特字符串的子串的工作可能的复制3](http://stackoverflow.com/questions/39677330/how-does-string-substring-work-in-swift-3) – sschale

+0

我不知道我为什么得到票,我可以在Java中很容易做到这一点但在迅速,我试图3个小时没有成功 –

+0

@sschale我见过那个线程,但在我的情况我不能使用Range endindex具有常数“offsetBy”值,因为我的endIndex在两个字符串 –

回答

1

斯威夫特的串是复杂的:

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]) 
} 
+0

ahhh谢谢,我想不到它,我一直在寻找3小时,我找不到。感谢很多 –

+0

在swift 3我没有导入它,但它的工作原理 –

+2

@UniqueLoLApps只需使用“Swift substring”搜索得到的最高结果是一个SO问题,共有57票,7个答案以及对该主题的大量明确解释。 – Alexander

0

这是非常容易使用str.index()方法如图@MikeHenderson的答案,但替代,如果没有使用该方法是通过串的迭代字符并创建一个新的字符串来保存“:”后面的前两个字符,如下所示:

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 

希望这有助于您!

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))) 
} 
相关问题