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 == "#"