私は占いファイルのパーサーを作成しています。 Fortuneは* nixプラットフォーム上の小さなアプリで、ランダムな "運"を表示します。占いファイルはストレートテキストであり、各運勢はそれ自身の行のパーセント記号で区切られています。たとえば:Objective-Cでパーセント記号(%)でファイルを解析する
A little suffering is good for the soul.
-- Kirk, "The Corbomite Maneuver", stardate 1514.0
%
A man either lives life as it happens to him, meets it head-on and
licks it, or he turns his back on it and starts to wither away.
-- Dr. Boyce, "The Menagerie" ("The Cage"), star date unknown
%
は、私が見つけたことは、ファイルを解析するとき、stringWithContentsOfFileが代わりに%記号を持つ文字列を返すことです。例えば:私は、ファイルの内容にcomponentsSeparatedByCharactersInSetを呼び出すとき
@"A little suffering is good for the soul.\n\t\t-- Kirk, \"The Corbomite Maneuver\", stardate 1514.0\n%\nA man either lives life as it happens to him, meets it head-on and\nlicks it, or he turns his back on it and starts to wither away.\n\t\t-- Dr. Boyce, \"The Menagerie\" (\"The Cage\"), stardate unknown\n%"
しかし、すべてがNSTaggedPointerStringあるパーセント記号を除いて、文字列として解析されます。行を印刷すると、パーセント記号が消えてしまいます。
これはパーセント記号が文字列の書式指定子であるためですか?その場合、最初のコンテンツの引き出しがそれらを逃れるだろうと私は思います。
NSFileManager *fileManager;
fileManager = [NSFileManager defaultManager];
NSStringEncoding stringEncoding;
// NSString *fileContents = [NSString stringWithContentsOfFile:fileName encoding:NSASCIIStringEncoding error:nil];
NSString *fileContents = [NSString stringWithContentsOfFile:fileName usedEncoding:&stringEncoding error:nil];
NSArray *fileLines = [fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
使用されるエンコーディングはUTF-8されて終わる:
は、ここでは、コードです。私はプレーンなASCIIを指定しようとしましたが、同じ結果が得られることがわかります。
質問には、どうすればパーセント記号を保持できますか?または、それを区切り文字として使用し、後続の結果のそれぞれを個別に解析する必要があります。
私は行を印刷し、パーセント記号は両方の例にあります。 –
@ l'l'lあなたは同じ方法を使いましたか? –
うん、コメントを外してみて、あなたが今持っているものを試してみた - NSLog(@ "%@"、fileLines); 'これが結果だった:https://gist.github.com/anonymous/181ce0d4da733afd42740a0e3dfa676e –