我需要根据字符“〜”分隔我的应用程序打开的文件。例如,如果我使用字符串“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)'
我该怎么做才能解决这个问题?
答案 0 :(得分:2)
NSArray *strings = [fileContentsAsString componentsSeparatedByString:@"~"];
答案 1 :(得分:1)
Wevah已经回答了你的问题,但我想我会为你指出一些其他的事情:
提取子字符串的方法称为substringWithRange:
,它将NSRange
结构作为参数。 NSRange
结构的成员为location
和length
。如果要提取子字符串,请初始化NSRange
结构并将其传递给substringWithRange:
以提取这些字符:
NSRange myRange = { .location = integerA, .length = 1 };
NSString *mySubstr = [textViewString substringWithRange:myRange];
不要仅使用此方法逐个提取字符,因为还有其他方法可用。
在Objective-C中,==
不能用于检查两个字符串是否相等,而是必须使用isEqualToString:
方法,如下所示:
if ([mySubstr isEqualToString:@"~"])
{
// ...
}