0

補助アプリケーションによって構築された DataFile があります。データ ファイルに含まれる部分文字列を特定する必要があります。それらは、それらを区切る文字記号によって識別できます。例えば ​​: *!substringqSxt .部分文字列はプロジェクトごとに異なるため、次の部分文字列を読み取るには、それらを区切る記号を見つける必要があります。また、ファイルをさまざまなエンコーディングで印刷し、どのエンコーディングが使用され、元のデータ ファイルと一致したかを調べました。であることがわかりました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可能なエンコーディングに変換しようとしましたが、何もしませんでした。

また、テキスト編集でファイルを開いて「検索」機能を使用すると、区切り文字列は見つかりませんが、他の単語が見つかります。私の内臓は、その関連性を教えてくれます。どこで情報を調べればよいかわかりません。ファイルは保護されている可能性がありますが、そのコピーを読んでいます。

4

1 に答える 1

0

ここで問題が発生していることがわかりました。適切なエンコーディングは依然として MacOsRoman です。問題は、プレフィックス文字列*debutAudio "jjbj"に、実際には各文字の間に 1/4 スペースのような小さなスペースがあることです。ここにリストされているすべてのユニコードスペースを試しました: https://www.cs.tut.fi/~jkorpela/chars/spaces.html#adj 成功しませんでした。ここで、MacOsRoman の下に半分または 4 分の 1 のスペースを見つけて、それが機能するかどうかを確認します。

于 2015-09-22T20:37:48.217 に答える