2 行の数値を含むテキスト ファイルがあります。やりたいことは、各行を文字列に変換し、それを配列 (フィールドと呼ばれる) に追加することだけです。EOF 文字を見つけようとすると、私の問題が発生します。問題なくファイルから読み取ることができます。コンテンツを NSString に変換してから、このメソッドに渡します。
-(void)parseString:(NSString *)inputString{
NSLog(@"[parseString] *inputString: %@", inputString);
//the end of the previous line, this is also the start of the next lien
int endOfPreviousLine = 0;
//count of how many characters we've gone through
int charCount = 0;
//while we havent gone through every character
while(charCount <= [inputString length]){
NSLog(@"[parseString] while loop count %i", charCount);
//if its an end of line character or end of file
if([inputString characterAtIndex:charCount] == '\n' || [inputString characterAtIndex:charCount] == '\0'){
//add a substring into the array
[fields addObject:[inputString substringWithRange:NSMakeRange(endOfPreviousLine, charCount)]];
NSLog(@"[parseString] string added into array: %@", [inputString substringWithRange:NSMakeRange(endOfPreviousLine, charCount)]);
//set the endOfPreviousLine to the current char count, this is where the next string will start from
endOfPreviousLine = charCount+1;
}
charCount++;
}
NSLog(@"[parseString] exited while. endOfPrevious: %i, charCount: %i", endOfPreviousLine, charCount);
}
私のテキストファイルの内容は次のようになります。
123
456
最初の文字列 (123) は問題なく取得できます。呼び出しは次のようになります。
[fields addObject:[inputString substringWithRange:NSMakeRange(0, 3)]];
次に、2 番目の文字列を呼び出します。
[fields addObject:[inputString substringWithRange:NSMakeRange(4, 7)]];
しかし、エラーが発生しました。これは、インデックスが範囲外であるためだと思います。インデックスは 0 から始まるため、インデックス 7 はなく (EOF 文字であると思われます)、エラーが発生します。
すべてを要約すると、6 文字 + EOF 文字しかない場合に 7 のインデックスを処理する方法がわかりません。
ありがとう。