V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
ma125125t
V2EX  ›  iDev

用 swift 写翻转字符串,结果。。。

  •  
  •   ma125125t · 2016-08-04 11:10:16 +08:00 · 4906 次点击
    这是一个创建于 3036 天前的主题,其中的信息可能已经有所发展或是发生改变。

    length 属性没有, subString 方法体验很差,整了半天没弄明白 s.substringWithRange 里的变量是什么,怎么也初始化不出来。

    搜了下 so ,长度方法一个版本改了三次

    let str = "Hello" let count = str.length // returns 5 (Int)

    extension String { var length: Int { return countElements(self) } // Swift 1.1 } extension String { var length: Int { return count(self) } // Swift 1.2 } extension String { var length: Int { return characters.count } // Swift 2.0 }

    这让人怎么好好用 swift 呢

    16 条回复    2016-08-05 06:57:54 +08:00
    Totato5749
        1
    Totato5749  
       2016-08-04 11:16:52 +08:00
    会不会变成讨论编程语言优劣的帖?
    loveuqian
        2
    loveuqian  
       2016-08-04 11:17:45 +08:00
    public var length: Int {
    return self.characters.count
    }
    PopeyeLau
        3
    PopeyeLau  
       2016-08-04 11:59:18 +08:00
    `let result = String(str.characters.reverse())`
    broccoli
        4
    broccoli  
       2016-08-04 12:01:53 +08:00   ❤️ 2
    String("abcdefg".characters.reverse())
    mofet
        5
    mofet  
       2016-08-04 13:08:23 +08:00
    Swift 略麻烦, Range 和 NSRange 不是一回事, String.Index 和 Int 也不能转换。不熟悉的话 as NSString 来处理。
    onevcat
        6
    onevcat  
       2016-08-04 15:16:45 +08:00
    Swift 翻转字符串?
    @broccoli 的就是正解...其他一律邪门歪道..
    ma125125t
        7
    ma125125t  
    OP
       2016-08-04 16:48:29 +08:00
    @onevcat 是的。。后来也用了这个方法,实测可行。一般的思路是遍历 append 嘛。。
    PrideChung
        8
    PrideChung  
       2016-08-04 17:04:24 +08:00
    Swift 里我最讨厌的 API 就是字符串处理,相当违反直觉
    dorentus
        9
    dorentus  
       2016-08-04 20:50:40 +08:00 via iPhone
    @PrideChung 除非只处理 ascii ,否则“直觉”就是错的…

    @ma125125t 想遍历的话,直接遍历 String.characters 不就好了。
    free9fw
        10
    free9fw  
       2016-08-04 20:54:49 +08:00
    swift 字符串说实话,比 OC 好用太多了,特别是在加密算法方面
    zhangyi2099
        11
    zhangyi2099  
       2016-08-04 21:28:20 +08:00 via iPhone
    swift 是门 pop 的语言
    EchoWhale
        12
    EchoWhale  
       2016-08-04 21:31:37 +08:00 via Android
    leetcode 上的字符串题目, swift 做不来
    tuimaochang
        13
    tuimaochang  
       2016-08-04 22:12:23 +08:00
    《 swift 从精通到入门》
    dtfm
        14
    dtfm  
       2016-08-04 23:41:09 +08:00 via Android
    每当这个时候,我就想起了 python 的切片大法
    PrideChung
        15
    PrideChung  
       2016-08-05 00:34:25 +08:00
    @dorentus 要处理可变长字符不需要把 API 设计得这么难用,参考 Ruby
    onevcat
        16
    onevcat  
       2016-08-05 06:57:54 +08:00 via iPhone   ❤️ 1
    @PrideChung 如果告诉你 Ruby 的字符串处理也是各种错误呢… Swift 应该是现在为数不多的在字符串上没有太大问题的语言了,当然前提是要真的搞明白各种 code point 到底意味着什么…
    最简单还是考察下变音符的处理, Swift 的 characters view 幕后帮你处理了很多你永远不会想做事情。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3944 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:57 · PVG 08:57 · LAX 16:57 · JFK 19:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.