2017-03-12 199 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))) 
} 
相關問題