Swift 将unichar转换为字符串?
我从Swift 将unichar转换为字符串?,swift,Swift,我从NSString的实例方法characterAtIndex(Int)返回了一个unichar类型,我想将它与一个Swift类型String进行比较。有没有一个简单的方法可以做到这一点 var str = "#ffffff" var unichar = (str as NSString).characterAtIndex(0) var unicharString = // Perform magic var containsHash = unicharString == "#" // Shou
NSString
的实例方法characterAtIndex(Int)
返回了一个unichar
类型,我想将它与一个Swift类型String
进行比较。有没有一个简单的方法可以做到这一点
var str = "#ffffff"
var unichar = (str as NSString).characterAtIndex(0)
var unicharString = // Perform magic
var containsHash = unicharString == "#" // Should return `true`
谢谢使用UnicodeScalar将unichar转换为字符串或字符(字符串的元素)
- unichar是UInt16的别名(
)typealias unichar=UInt16
- UnicodeScalar具有
init(v:UInt16)
- 字符(字符串元素)具有
init(uscalar:UnicodeScalar)
注意:字符串也有
init(count:Int,repeatedValue c:UnicodeScalar)
,但这不适合这种情况。今晚我问的是最简单的问题,嗯?这个问题实际上有点奇怪。获取NSString的characterAtIndex本质上返回一个Int值,不能直接与Swift字符串进行比较。您使用characterAtIndex有什么特别的原因吗?首先,我尝试了str[0]
,但没有成功。我不知道String.Index
,所以我只使用了NSString.characterAtIndex
。我也不知道String实际上可以访问NSString的整个API(将NSString.length
重命名为utf16count
)嗯,是的,Swift中的字符处理非常不同。在obj-c中,所有字符都是相同的位大小,但在Swift中不再如此。您可以使用NSString API,但我认为最好尽可能避免使用它。绝对同意!奇怪的是,String.characterAtIndex(Int)
报告一个错误,说它不存在,即使它应该是可用的。为什么不使用var containsHash=str.hasPrefix(#)和String(UnicodeScalar(unichar))
进行字符串转换呢。
var str:String = "#ffffff"
var unichar = str[str.startIndex]
var unicharString = "\(unichar)"
var containsHash = unicharString == "#"
var str = "#ffffff"
var unichar = (str as NSString).characterAtIndex(0)
var unicharString = Character(UnicodeScalar(unichar))
var containsHash = unicharString == "#"