Swift似乎試圖反對一個由原子字符數組組成的字符串的概念,這對於許多用途而言是有意義的,但是有很多編程涉及通過ASCII實現所有實際目的的數據結構:特別是文件I/O。指定字符文字沒有內置的語言特性似乎是一個很大的漏洞,即不存在C/Java的的/ etc式的模擬:是否有一種乾淨的方式來指定Swift中的字符文字?
String foo="a"
char bar='a'
這是相當不方便的,因爲即使你將您的字符串轉換爲字符數組,你不能做這樣的事情:
let ch:unichar = arrayOfCharacters[n]
if ch >= 'a' && ch <= 'z' {...whatever...}
一個相當哈克的解決辦法是做這樣的事情:
let LOWCASE_A = ("a" as NSString).characterAtIndex(0)
let LOWCASE_Z = ("z" as NSString).characterAtIndex(0)
if ch >= LOWCASE_A && ch <= LOWCASE_Z {...whatever...}
這工作,但很明顯,這很醜陋。有沒有人有更好的方法?
請注意,Swift字符串或字符的排序不基於ASCII碼(比較http://stackoverflow.com/a/25775112/1187415)。例如''a「...」z「'包含字符」ä「。這可能是需要的或不需要。 – 2014-09-29 19:32:54
@MartinR謝謝,我沒有意識到這一點。我用這個信息更新了答案。 – 2014-09-29 21:32:05
這是一個很好的訣竅,我會在銀行裏爲其他類型的邏輯保留。儘管如此,仍然有點高:當談到char-by-char文件格式解析時,性能和精度一樣重要,不能替代能夠在類int和類字符之間來回切換一個人物。所以char-literal仍然是需要的。 – 2014-09-29 22:14:29