我有一个由附属应用程序构建的数据文件。我需要找到数据文件中包含的一些子字符串。它们可以通过分隔它们的字符符号来识别。例如 : *!substring
qSxt 。子字符串因项目而异,因此我需要找到分隔它们的符号以读取以下子字符串。我还将文件打印为不同的编码,尝试使用哪种编码并匹配原始数据文件。发现它是MacOsRomanStringEncoding
。
我NSRange:rangOfString
用来定位分隔符号。这是我的代码:
char *debutAudio ="jjbj";
char *finAudio ="qSxt";
NSString *debutAudioConverted = [[NSString alloc]
initWithCString: debutAudio
encoding:NSMacOSRomanStringEncoding];
NSString *finAudioConverted = [[NSString alloc]
initWithCString: finAudio
encoding:NSMacOSRomanStringEncoding];
NSRange debutaudioRange =[dataFileContent rangeOfString:debutAudioConverted];
NSRange finaudioRange =[dataFileContent rangeOfString:finAudioConverted];
NSLog(@"range is %@",NSStringFromRange(debutaudioRange));
NSLog(@"range is %@",NSStringFromRange(finaudioRange));
两个NSLog
返回范围都是 {9223372036854775807, 0} 所以不要在那里定位分隔字符串。
如果我要求查找文件中包含的其他字符串,例如“设置”,rangeOfString
则会返回正确的位置和长度。
我认为该文件可能包含多种编码,并尝试转换initWithCString
为任何可能的编码,但无济于事。
此外,如果我在文本编辑中打开文件并使用“查找”功能,它不会找到分隔字符串,但会找到其他单词。我的胆量告诉我它的相关性。我不知道在哪里寻找信息。可以保护文件吗,不过我正在阅读它的副本。