如何根据特定字符分离文件中的NSString?

时间:2011-03-30 21:03:30

标签: objective-c nsstring

我需要根据字符“〜”分隔我的应用程序打开的文件。例如,如果我使用字符串“test~test2”保存文本文件,我需要它将字符串拆分为两个NSStrings:(@“test”和@“test2”)。我怎么能这样做?

我更喜欢将字符串加载到NSTextView中,让它看一下单个字母,如下所示:

for (int integerA = 0; integerA < [textViewString length]; integerA ++) {
    [textViewString selectRange(integerA, integerA)];
    if ([textViewString selectedRange] == @"~") {
        //then split the string
    }
}

唯一的问题是没有“selectRange”或“selectedRange”方法。其他方式完全没问题,但我希望能够让它逐个进行并将它们添加到正确的字符串中,因为我可能需要将文本文件中的字符串拆分为多达15个字符串。

非常感谢任何帮助!

编辑:解决了这个问题后,出现了一个新问题:我需要存储12个值,但NSArray会说明以下内容。

HIToolbox:忽略异常' * - [NSCFArray objectAtIndex:]:index(7)超出在Carbon事件发送中引发的bounds(7)'

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

NSArray *strings = [fileContentsAsString componentsSeparatedByString:@"~"];

答案 1 :(得分:1)

Wevah已经回答了你的问题,但我想我会为你指出一些其他的事情:

  1. 提取子字符串的方法称为substringWithRange:,它将NSRange结构作为参数。 NSRange结构的成员为locationlength。如果要提取子字符串,请初始化NSRange结构并将其传递给substringWithRange:以提取这些字符:

    NSRange myRange = { .location = integerA, .length = 1 };
    NSString *mySubstr = [textViewString substringWithRange:myRange];
    

    不要仅使用此方法逐个提取字符,因为还有其他方法可用。

  2. 在Objective-C中,==不能用于检查两个字符串是否相等,而是必须使用isEqualToString:方法,如下所示:

    if ([mySubstr isEqualToString:@"~"])
    {
        // ...
    }