2014-09-19 89 views
4

上午我正在將現有的目標c代碼(ios)重寫到Swift中,面對enumerateSubstringsInRange方法的一些問題。任何人都可以幫助我將下面的代碼轉換爲Swift嗎?enumerateSubstringsInRange in Swift

[contentString enumerateSubstringsInRange:NSMakeRange(0,[contentString length]) 
           options:NSStringEnumerationByComposedCharacterSequences 
           usingBlock: ^(NSString *substring, 
           NSRange substringRange, 
           NSRange enclosingRange,BOOL *stop) { 

      if(substring.length >= 2) { 
       /* my code goes here */ 
      } 
    } 
] 
+0

你能解釋一下這段代碼的用途嗎? Swift字符串處理Unicode字符要比NSStrings好得多,所以可能會有更好的解決方案。 – 2014-09-19 12:12:11

回答

2

試試這個:

contentString.enumerateSubstringsInRange(NSMakeRange(0, (contentString as NSString).length), options: NSStringEnumerationOptions.ByComposedCharacterSequences) { (substring, substringRange, enclosingRange, stop) ->() in 
    if((substring as NSString).length >= 2) { 
     NSLog("%@", substring) 
    } 
} 

注意,爲了訪問String你必須將它轉換爲NSString的length屬性,如上面看到的。

0

對於斯威夫特版本3.0.2,使用下面的代碼

  string.enumerateSubstrings(in: NSMakeRange(0, (string as NSString).length), options: NSString.EnumerationOptions.byComposedCharacterSequences) { (substring, substringRange, enclosingRange, stop) ->() in 

     let objCString:NSString = NSString(string:substring!) 
     let hs: unichar = objCString.character(at: 0) 
    } 
-1

讓contentString:的NSString = 「串」;

contentString.enumerateSubstrings(在:NSRange.init(位置:0,長度:contentString.length),選項:NSString.EnumerationOptions.byComposedCharacterSequences){(子串,substringRange,enclosingRange, 停止)在 //代碼 }

+0

儘管這個答案可能是正確和有用的,但如果你[包括一些解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)以及它來解釋它是如何幫助解決問題的。 – 2017-02-06 07:41:15

0

你可以試試這個。

 contentString.enumerateSubstrings(in: NSRange(location: 0, length: contentString.length), options: NSStringEnumerationByComposedCharacterSequences, usingBlock: {(_ substring: String, _ substringRange: NSRange, _ enclosingRange: NSRange, _ stop: Bool) -> Void in 
     if substring.length >= 2 { 
      /* my code goes here */ 
     } 
    }) 

欲瞭解更多,你可以去這裏在線轉換你的代碼的數量。 https://iswift.org/try。希望這個幫助。

+0

上面沒有提到Swift 3,我猜。編輯爲Swift 3. – Ren 2017-02-06 09:30:58

+0

我的不好,標籤已添加後,你的答案。 – Sulthan 2017-02-06 09:43:30