【问题标题】:Cocoa: Parse NSString by character lengthCocoa:按字符长度解析 NSString
【发布时间】:2009-12-02 21:49:33
【问题描述】:

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

那么,我该怎么做呢?

示例:

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

NSArray 对象:

“她”

“我”

"s m"

“是”

“三”

“ng”

【问题讨论】:

  • 我认为您需要更好地描述您正在尝试做的事情。你想把字符串分解成一定长度的子字符串吗?
  • 在您的问题中显示一个示例字符串,以及您希望它如何分解。它会给我们一个更好的主意。
  • 你去!希望它足够清楚

标签: cocoa parsing nsstring nsarray


【解决方案1】:

这行得通吗?虽然没有测试

@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

EDIT -- 实现为一个类别用作

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

【讨论】:

  • 所以这会让我将字符串解析成 x 个字符长的片段?怎么办,把int长度修改成我想要的长度?
  • 这是一种方法,因此您在向自己发送此splitString:intoPartLengths: 消息时会指定长度。
  • epatel:你永远不会减少length的值,所以while循环将永远循环。
  • Peter:他最终会进入 if 语句并在那里退出 while 循环。我发现它不是最容易遵循代码的,但它应该可以工作。
  • 好的,我到了,但是当我运行它时出现错误“无法识别的选择器发送到实例 0xd21920”
猜你喜欢
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 2017-07-08
相关资源
最近更新 更多