NSString搜索substring / csv文件IO

时间:2011-08-23 02:10:24

标签: objective-c ios file-io if-statement substring

这给了我很大的麻烦。无论出于何种原因,当我使用此代码时,if语句始终计算为false:

while(!feof(file))
{
    NSString *line = [self readNSString:file];
    NSLog(@"%@", line);
    NSLog(@"%@", search);
    NSRange textRange;
    textRange =[line rangeOfString:search];

    if(textRange.location != NSNotFound)
    {
        NSString *result = [line substringFromIndex:NSMaxRange([line rangeOfString:search])];
        resultView.text = result;
    }
    else
    {
        resultView.text = @"Not found";
    }
}

当函数执行时,两个NSLog告诉我“line”和“search”字符串是它们应该是什么,那么为什么if语句总是评估为false?我必须错过一些简单的东西,让另一组眼睛变得很棒。感谢

编辑:(功能“readNSString”)

- (NSString*)readNSString:(FILE*) file
{
    char buffer[300];

    NSMutableString *result = [NSMutableString stringWithCapacity:256];
    int read;
    do
    {
        if(fscanf(file, "%299[^\n]%n%*c", buffer, &read) == 1)
            [result appendFormat:@"%s", buffer];
        else
            break;
    } while(r == 299);

    return result;
}

编辑2:

通过调用第一个函数来设置搜索,并使用NSString *变量作为参数,如下所示:

NSString *textFieldText = [[NSString alloc]
                              initWithFormat:@"%@", textField.text];

[self readFile:textFieldText];

编辑3(NSLogs输出)

行:德国意大利法国

搜索:意大利

1 个答案:

答案 0 :(得分:2)

我认为您正在使用rangeOfStringNSNotFound等,因此问题可能与使用{{从文件读取的数据创建字符串有关。 1}}。

我怀疑你的两种字符串格式之间可能存在编码问题 - 我会调查“%s”是否正确地将空终止的C字符串编码为与具有适当编码的unicode appendFormat:@"%s"相同的格式。

尝试将NSString函数中的值作为字符串文字进行硬编码,仅用于测试并查看该比较是否有效,如果是这样,这往往表明它可能与编码从文件创建的字符串。