【发布时间】:2014-06-27 23:14:12
【问题描述】:
我正在尝试从某些代码中提取一些字符串,但遇到了 NSRangeException 我不明白的问题。这是我的代码:
NSString *start = @"<strong><span class='target'>";
NSString *end = @"</span></strong> ";
NSRange startRange = [stringToScan rangeOfString:start];
NSRange endRange = [stringToScan rangeOfString:end];
NSRange targetRange;
targetRange.length = endRange.location - startRange.location - startRange.length;
targetRange.location = startRange.location + startRange.length;
NSString *adlerNumber = [stringToScan substringWithRange:targetRange];
NSLog(@"%@",adlerNumber);
NSString *startHeadword = @"Translated headword: </strong>";
NSString *endHeadword = @"<strong class=";
NSRange startRangeHeadword = [stringToScan rangeOfString:startHeadword]; //logs as e.g. location 773, length 29
NSRange endRangeHeadword = [stringToScan rangeOfString:endHeadword]; //logs as e.g. location 809
NSRange targetRangeHeadword;
targetRangeHeadword.length = endRangeHeadword.location - startRangeHeadword.location - startRangeHeadword.length; //logs as e.g. 27
targetRangeHeadword.location = startRangeHeadword.location + startRangeHeadword.length; // logs as e.g. 2496
NSString *translatedHeadword = [stringToScan substringWithRange:targetRangeHeadword];
adlerNumber 已创建并无错误地记录。但是随后尝试创建translatedHeadword(上面的最后一行代码)给了我这个错误:
Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFString substringWithRange:]: Range {2634, 2147481013} out of bounds; string length 9309'
如果 targetRangeHeadword.length 记录为 27,targetRangeHeadword.location 记录为 2496,我如何获得 NSRangeException 给我的数字?我该如何解决这个问题?
提前感谢您的帮助,伙计们。
【问题讨论】:
-
另外,请确保:
class='target'实际上并未阅读:class="target"。对于NSString,(' != ")
标签: ios objective-c nsrange nsrangeexception