Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa:按字符长度分析NSString_Cocoa_Parsing_Nsstring_Nsarray - Fatal编程技术网

Cocoa:按字符长度分析NSString

Cocoa:按字符长度分析NSString,cocoa,parsing,nsstring,nsarray,Cocoa,Parsing,Nsstring,Nsarray,我有一个正在使用的NSString,但我想按字符长度解析它。因此,将其拆分为一个NSArray,让数组中的每个对象都是该字符串中的x个字符。所以基本上,把字符串分成一定长度的子字符串 那么,我该怎么做呢 例如: NSString*string=@“这是我的字符串” NSArray对象: “她” “e i” “s m” “y s” “tri” “ng”这行吗?不过还没测试过 @interface NSString (MyStringExtensions) - (NSArray*)splitInto

我有一个正在使用的NSString,但我想按字符长度解析它。因此,将其拆分为一个NSArray,让数组中的每个对象都是该字符串中的x个字符。所以基本上,把字符串分成一定长度的子字符串

那么,我该怎么做呢

例如:

NSString*string=@“这是我的字符串”

NSArray对象:

“她”

“e i”

“s m”

“y s”

“tri”


“ng”

这行吗?不过还没测试过

@interface NSString (MyStringExtensions)
- (NSArray*)splitIntoPartsWithLength:(NSUInteger)length;
@end

@implementation NSString (MyStringExtensions)
- (NSArray*)splitIntoPartsWithLength:(NSUInteger)length
{
    NSRange range = NSMakeRange(0, length);
    NSMutableArray *array = [NSMutableArray array];
    NSUInteger count = [self length];

    while (length > 0) {
        if (range.location+length >= count) {
            [array addObject:[self substringFromIndex:range.location]];
            return [NSArray arrayWithArray:array];
        }
        [array addObject:[self substringWithRange:range]];
        range.location = range.location + length;
    }
    return nil;
} 
@end
编辑--

NSString *myString = @"Wish you a merry x-mas";
NSArray *array = [myString splitIntoPartsWithLength:10];

这行吗?不过还没测试过

@interface NSString (MyStringExtensions)
- (NSArray*)splitIntoPartsWithLength:(NSUInteger)length;
@end

@implementation NSString (MyStringExtensions)
- (NSArray*)splitIntoPartsWithLength:(NSUInteger)length
{
    NSRange range = NSMakeRange(0, length);
    NSMutableArray *array = [NSMutableArray array];
    NSUInteger count = [self length];

    while (length > 0) {
        if (range.location+length >= count) {
            [array addObject:[self substringFromIndex:range.location]];
            return [NSArray arrayWithArray:array];
        }
        [array addObject:[self substringWithRange:range]];
        range.location = range.location + length;
    }
    return nil;
} 
@end
编辑--

NSString *myString = @"Wish you a merry x-mas";
NSArray *array = [myString splitIntoPartsWithLength:10];

我认为你需要更好地描述你想做的事情。是否要将字符串拆分为特定长度的子字符串?请在问题中显示一个示例字符串,以及如何拆分。这会给我们一个更好的主意。好了!希望这很清楚,我认为你需要更好地描述你想做的事情。是否要将字符串拆分为特定长度的子字符串?请在问题中显示一个示例字符串,以及如何拆分。这会给我们一个更好的主意。好了!希望它足够清晰,这样我就可以将字符串解析为x个字符长的片段了?我该怎么做,只需将int length修改为我想要的长度?这是一种方法,因此您可以在向自己发送此
splitString:intoPartLength:
message时指定长度。epatel:您永远不会减少
length
的值,因此,
while
循环将永远循环。彼得:他最终将进入if语句并退出while循环。我不认为这是最容易理解的代码,但它应该可以工作。好吧,我已经做到了,但是我在运行它时遇到了错误“无法识别的选择器发送到实例0xd21920”,这样可以将字符串解析为x个字符长的片段?我该怎么做,只需将int length修改为我想要的长度?这是一种方法,因此您可以在向自己发送此
splitString:intoPartLength:
message时指定长度。epatel:您永远不会减少
length
的值,因此,
while
循环将永远循环。彼得:他最终将进入if语句并退出while循环。我不认为这是最容易理解的代码,但它应该可以工作。好的,我已经做到了,但是我在运行它时遇到了错误“无法识别的选择器发送到实例0xd21920”