2014-09-19 77 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