比如我有一个 NSString
是 str = @"我就是测试一下"
或者 str = @"我"
。我想限制一定的字节长度。例如 byteLength = 10
。
我知道 subSrtring 不是 str.length=10
如何从 NSString 中获取一定字节长度的 subString,谢谢
您可以使用 dataUsingEncoding
方法从 NSString
获取 NSData
。然后使用 length
和 bytes
属性获取 byte length
或 bytes
那么如果 NSData's length > 你的特定长度
你应该使用 + (id)dataWithBytesconst void *)bytes lengthNSUInteger)length;
方法获取一定长度的字节 NSData
你应该小心返回 NSData
可能无法被 NSString
最后你可以使用 - (id)initWithDataNSData *)data encodingNSStringEncoding)encoding;
方法得到你想要的结果NSString
p>
你可以使用下面的代码:
- (NSString *)fetchStringWithOriginalStringNSString *)originalString withByteLengthNSUInteger)length
{
NSData* originalData=[originalString dataUsingEncoding:NSUTF8StringEncoding];
const char *originalBytes = originalData.bytes;
//make sure to use a loop to get a not nil string.
//because your certain length data may be not decode by NSString
for (NSUInteger i = length; i > 0; i--) {
@autoreleasepool {
NSData *data = [NSData dataWithBytesriginalBytes length:i];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (string) {
return string;
}
}
}
return @"";
}
你可以像这样调用上面的方法:
NSString* originalString= @"我就是测试一下";
NSString *string = [self fetchStringWithOriginalStringriginalString withByteLength:10];
NSData* stringData=[string dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"10 bytes string : %@ ; it only %i bytes",string,stringData.length);
结果:
小心:
- (id)initWithDataNSData *)data encodingNSStringEncoding)encoding;
可能返回 nil
正如苹果所说:- (id)initWithDataNSData *)data encodingNSStringEncoding)encoding;
返回:
An NSString object initialized by converting the bytes in data into Unicode characters using encoding. The returned object may be different from the original receiver. Returns nil if the initialization fails for some reason (for example if data does not represent valid data for encoding).
所以你应该使用 for 循环来获取可以通过 NSSting
关于ios - 如何从 NSString 获取特定字节长度的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18583655/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |