如何访问NSMutableString Objective-C中的字符
我有一个名为MyMutableStr的如何访问NSMutableString Objective-C中的字符,objective-c,nsmutablestring,Objective C,Nsmutablestring,我有一个名为MyMutableStr的NSMutableString实例,我想访问其索引7处的字符 例如: unsigned char cMy = [(NSString*) MyMutableStr characterAtIndex:7]; 我认为这是一种丑陋的方式;代码太多了 我的问题是:Objective-C中是否有更简单的方法来访问NSMutableString中的字符 例如,在C语言中,我们可以使用[]运算符访问字符串中的字符: unsigned char cMy = MyMutabl
NSMutableString
实例,我想访问其索引7处的字符
例如:
unsigned char cMy = [(NSString*) MyMutableStr characterAtIndex:7];
我认为这是一种丑陋的方式;代码太多了
我的问题是:Objective-C中是否有更简单的方法来访问NSMutableString
中的字符
例如,在C语言中,我们可以使用[]运算符访问字符串中的字符:
unsigned char cMy = MyMutableStr[7];
方法是使用
characterAtIndex:
,但不需要将其强制转换为NSString
指针,因为NSMutableString
是NSString
的子类。所以它没有那么长,但是如果您仍然觉得不舒服,我建议使用UTF8String
来获得一个C字符串,您可以使用括号操作符对其进行迭代:
const char* cString= [MyMutableStr UTF8String];
char first= cString[0];
但请记住这一点(摘自):
返回的C字符串被自动释放,就像返回的对象被释放一样;如果需要将C字符串存储在创建C字符串的自动释放上下文之外,则应复制该字符串
正如其他人所说的特征索引:但有些事情你可能需要仔细考虑。 首先,您要处理一个可变字符串。你要小心避免它从你下面变出来。一种方法是创建一个不可变副本,并将其用于op
第二,你正在处理Unicode,所以你可能需要考虑规范化你的字符串以得到预组合的形式,因为一些视觉表示可能不止一个实际的uniCar。这通常是人们的绊脚石
characterAtIndex
返回一个unichar
,而不是无符号字符[str characterAt:k]
不等同于[str UTF8String][k]
。要了解这一点,请考虑前者的结果,如果索引k
处的字符代码高于127。此外,[str UTF8String]
和str
在存在非ASCII字符(即代码在0-127之外的字符)时可能具有完全不同的“逻辑长度”。