为什么isEqualToString不按我认为应该的方式工作?
我正在将UTF-8编码的文本文件加载到数组中。在文本文件的几个地方有空行,没有空格。为什么isEqualToString不按我认为应该的方式工作?
在这种条件:
tempstring = [array objectAtIndex:index];
if([tempstring isEqualToString:@""] == NO) {
// do something
}
结果总是NO。我NSLog的字符串,但我没有看到空白行上的控制台中的任何字符。 NSLog还显示长度为1的空白行。
我该如何纠正此条件才能正常工作?
尝试比较之前除去来自的NSString从NSArray的空白。请看这里:Collapse sequences of white space into a single character and trim string
tempstring = [array objectAtIndex:index];
如果([tempstring isEqualToString:@ “”] == FALSE & & tempstring =零!){
// do something
}
空白行通常不是完全空白 - 即使没有别的东西,它们在最后仍然有换行符。试试这个:
tempstring = [array objectAtIndex:index];
if([tempstring isEqualToString:@"\n"] == NO) {
// do something
}
这不能在我的测试中工作 – TigerCoding 2011-04-08 12:29:27
如果失败,但剥离空白的工作,这意味着你没有空行 - 你有行中有一个或多个空白字符。 – 2011-04-08 12:30:42
奇怪的是,空白不会显示在xcode的文本文件中。 :|但是你说什么是有道理的。它可以在加载到数组中时添加吗? array = [self loadTextFileNamed:filename]; – TigerCoding 2011-04-08 12:41:59
完美:tempstring = [tempstring stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; – TigerCoding 2011-04-08 12:26:42