gpt4 book ai didi

ios - 如何从 NSString 中获取特定字节长度的子字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:45:57 25 4
gpt4 key购买 nike

比如我有一个NSStringstr = @"我就是测试一下"或者str = @"我"。我想限制一定的字节长度。例如 byteLength = 10

我知道 subString 不是 str.length=10 如何从 NSString 中获取特定字节长度的 subString,谢谢

最佳答案

您可以使用dataUsingEncoding 方法从NSString 获取NSData。然后使用 lengthbytes 属性获取 byte lengthbytes

然后如果NSData's length>你的特定长度你应该使用+ (id)dataWithBytes:(const void *)bytes length:(NSUInteger)length;方法来获取特定长度的字节 NSData 你应该注意返回的 NSData 可能无法被 NSString

解码

最后你可以使用- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding;方法得到你想要的结果NSString

你可以使用下面的代码:

- (NSString *)fetchStringWithOriginalString:(NSString *)originalString withByteLength:(NSUInteger)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 dataWithBytes:originalBytes length:i];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (string) {
return string;
}
}

}
return @"";
}

你可以像这样调用上面的方法:

NSString* originalString= @"我就是测试一下";
NSString *string = [self fetchStringWithOriginalString:originalString withByteLength:10];
NSData* stringData=[string dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"10 bytes string : %@ ; it only %i bytes",string,stringData.length);

结果: enter image description here

注意:- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding; 可能会返回 nil

正如苹果所说:- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com