如何根据某些字符在文件中分离NSString?

问题描述:

我需要根据字符“〜”分开我的应用程序打开的文件。例如,如果我保存一个字符串为“test〜test2”的文本文件,我需要它将字符串拆分为两个NSString:(@“test”和@“test2”)。我怎样才能做到这一点?如何根据某些字符在文件中分离NSString?

我宁愿将字符串加载到NSTextView并让它看单个字母,比如:

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

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

任何帮助非常感谢!

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

使HIToolbox:忽略例外 '* - [NSCFArray objectAtIndex:]:指数(7)超越界限(7)' 碳事件调度内部引发

我能做些什么来解决这个问题?

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

+0

什么对于? – Justin 2011-03-30 21:11:42

+0

这是为了“也许我对你在问什么感到困惑”。 – Wevah 2011-03-30 21:14:38

+0

如何访问字符串?我试过“objectAtIndex:1”,但没有做任何事情。 – Justin 2011-03-30 21:17:38

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:@"~"]) 
    { 
        // ... 
    } 
    
+0

非常好的一点。 – Wevah 2011-03-30 21:18:37

+0

好吧,但是当我在我的应用程序中使用“==”作为其他事情时,它就起作用了。感谢您的建议;这当然是有用的。 – Justin 2011-03-30 21:20:56

+0

@Justin:'=='可以用来比较数字,但是当你使用两个字符串时,'=='只会告诉你他们是否引用完全相同的对象。如果有两个不同的包含相同文本的字符串对象,'=='将失败,但是'isEqualToString:'将成功。 – dreamlax 2011-03-30 21:23:33