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

2016-08-04 11:10:16 +08:00
 ma125125t

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 呢

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

@ma125125t 想遍历的话,直接遍历 String.characters 不就好了。
free9fw
2016-08-04 20:54:49 +08:00
swift 字符串说实话,比 OC 好用太多了,特别是在加密算法方面
zhangyi2099
2016-08-04 21:28:20 +08:00
swift 是门 pop 的语言
EchoWhale
2016-08-04 21:31:37 +08:00
leetcode 上的字符串题目, swift 做不来
tuimaochang
2016-08-04 22:12:23 +08:00
《 swift 从精通到入门》
dtfm
2016-08-04 23:41:09 +08:00
每当这个时候,我就想起了 python 的切片大法
PrideChung
2016-08-05 00:34:25 +08:00
@dorentus 要处理可变长字符不需要把 API 设计得这么难用,参考 Ruby
onevcat
2016-08-05 06:57:54 +08:00
@PrideChung 如果告诉你 Ruby 的字符串处理也是各种错误呢… Swift 应该是现在为数不多的在字符串上没有太大问题的语言了,当然前提是要真的搞明白各种 code point 到底意味着什么…
最简单还是考察下变音符的处理, Swift 的 characters view 幕后帮你处理了很多你永远不会想做事情。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/297033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX