gpt4 book ai didi

objective-c - NSString 搜索子字符串/csv 文件 IO

转载 作者:行者123 更新时间:2023-11-28 23:14:12 24 4
gpt4 key购买 nike

这让我很头疼。无论出于何种原因,当我使用此代码时,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 输出)

线路:德国意大利法国

搜索:意大利

最佳答案

我认为您正确使用了 rangeOfStringNSNotFound 等,所以问题可能与从读取的数据创建字符串有关使用 appendFormat:@"%s" 的文件。

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

尝试将您从 readNSString 函数获得的值硬编码为代码中的字符串文字,仅用于测试,看看该比较是否有效,如果是这样,这往往表明它可能是处理从文件创建的字符串的编码。

关于objective-c - NSString 搜索子字符串/csv 文件 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com