如何在Swift 2.2中找出字符串[declared String type, not NSString]的长度(按字节)?

我知道一种解决方法是使用_bridgeToObejectiveC().length

还有其他出路吗?

someString.characters.count返回字符串的长度。 我想我没有得到您的真正要求。

字符数和长度是两件事。 Swift使用unicode。 在unicode中,不同字符占用的字节数不同。 我想知道一个字符串占用了多少字节。

let str: String ="Hello, World"

print(str.characters.count) // 12

let byteLength = str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)

print("byte lenght: \(byteLength)")//12

let str2: String ="你好"

print(str2.characters.count) // 2

let byteLength2 = str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)

print("byte lenght: \(byteLength2)")//12

let str: String ="Hello, World"

print(str.characters.count) // 12

let str1: String ="Hello, World"

print(str1.endIndex) // 12

let str2 ="Hello, World"

NSString(string: str2).length  //12

在Swift 1.2和Swift 2.0中引用String的长度并获取String的长度

如果您需要执行特殊的Unicode恶作剧,还可以查看str.utf8.count和str.utf16.count

那是一个答案

我认为类型转换是使用NSString类的方法和属性的另一种简便方法。

print((str as NSString).length)

试试这个代码:

Swift

let test : String ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

let bytes : NSInteger =   test.lengthOfBytesUsingEncoding(NSUTF8StringEncoding);

NSLog("%i bytes", bytes);

Objective C

请参阅此链接:

NSString的字节长度是多少?

这几乎是KawaiKx表示他们不感兴趣的:NSString方式...

您也使用String。 这不是导入的字符串,以查找导入的字节。

好的,现在您已经编辑了答案。 我同意这并不重要,我只是指出了这一点。 另外,我不知道您的评论怎么说,对不起。

在Objective-C 我们通常使用length来获 NSString类型的 字符串 长度 ,而在 Swift ,String结构体没有了这个方法,那怎样获 String类型的 字符串 长度 呢?我们可以通过他的扩展属性成员characters的count属性来获 let titleString : String = "title" let count = titleString.charac func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { if type == .cameraName { }else{ return true; guard let text = te...   在 字符串 显示的过程 ,发现如果服务器传过来的 字符串 包含了 “\r\n”就会发现这个 字符串 后面的字符全部看不见了,debug后发现原来是计算 字符串长度 时出现错误,用户输入的换行符在string 为\r\n,而 iOS 无论是7.0被放弃的sizeWithFont方法还是新 学习一门新语言怎么能少的了 字符串 呢。 Swift 的String和Objective-C语言 NSString还是区别不小的, Swift 的String又回归了正常状态,使用起来更为方便快捷。本篇博客的主题就是 Swift 字符串 类型String,String在 Swift 让人省心了不少。今天这篇博客就好好的认识一下 Swift 的String。一、 字符串 拷贝在 Swift 字符串 拷贝直接可以使用=号... 字符串 初始化时 长度 小于等于15的, 字符串 内容直接存放在str变量的内存 字符串 初始化时 长度 大于15的, 字符串 内容存放在__TEXT, __cstring (常量区), 字符串 的地址值信息存放在str变量的后8个 字节 ,但是需要通过计算才能得出真实的地址值; append后如果 字符串长度 小于等于15, 字符串 内容依然存放在str变量内存 ; append后如果 字符串长度 大于15,会开辟堆空间,因为常量区是不可以进行更改的。... 1.Note that Swift ’s use of extended grapheme clusters for Character values means that string concatenation and modification may not always affect a string’s charac NSString *text=@"helloworld你好吗";//16 NSUInteger length= text.length; NSUInteger length2=[text lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"length=%lu,length2=%lu,length3=%lu", 最近在用 swift 开发软件,但是 iOS 8要求更加严格,以前获 字符串 的宽度的方法,都不能用,自己写了个,虽然很简单,但是希望和大家分享。 // MARK:返回 字符串 的宽度 func returnWidth(string:NSString) -> CGFloat { let size: CGSize = string.sizeWithAttrib 一直想学 Swift ,但是 Swift 变化很快,所以一直拖着,最近便开始学习 网上有很多 Swift 的视频,都很完整,在这里写博客的目的是记录自己学习的东西,毕竟忘记的时候可以查看,好的记性不如烂的博客有句话这么说前面已经看了一些基本数据类型,没有记上总体来说就是Var Let 今天从 字符串 的操作开始 //字符类型 字符串 类型 let c:Character = "a var str = "Pokémon"var nsstr = str as NSStringstr.characters.count // 7nsstr.length // 8如上,同样一个 字符串 ,在String和NSString下,它的 长度 却不一样。因为Unicode编码是一种可变长格式。Unicode 字符串 是由编码点(code point)组成,而编码点又是由编码单元... 遍历。func demo() {let str: String = "abcdefg"//NSString不支持一下方式遍历//let str: NSString = "abcdefg"for c in str.characters{print(c)}} 字符串长度 func demo() {let str: String = "abcd你好"//1、返回制定编码对应的 字节 数量 每个汉字是三个 字节 ...