2

NSStringaをコンマ区切りのコンポーネントに分割しようとしています。どういうわけか、NSString25000 個のコンポーネントを含むと常に 25.500 個の値が返され、そのうち 500 個は emptyNSStringsです。私のコードは次のようになります。

NSString* fileContents = [NSString stringWithContentsOfFile:filePath 
                                                   encoding:NSUTF8StringEncoding
                                                      error:nil];
/* do stuff */
NSMutableArray* components = 
 [NSMutableArray arrayWithArray:
   [fileContents componentsSeparatedByCharactersInSet:
     [NSCharacterSet characterSetWithCharactersInString:@",\n\r "]]];
4

1 に答える 1

1

次の例を検討してください。

[@"\n,\n"componentsSeparatedByCharactersInSet:
    [NSCharacterSet characterSetWithCharactersInString:@",\n\r "]];

結果は、 がどのようcomponentsSeparatedByCharactersInSet:に動作するかを示しています。4 つのコンポーネント、すべて空の文字列。理由がわかりますか?

あなたが何を期待していたのかよくわかりませんが、それはそれがすることです。リストした文字のいずれかで分割されます。それらのうちの 2 つが隣り合っている場合、空の文字列が得られます。さらに、最初の文字列の前に文字列を追加し、最後の文字列の後に文字列を追加します。

したがって、25500 個のコンポーネントを取得する理由は、与えられたコマンドを考えると、それがコンポーネントの数です

于 2013-05-03T01:57:18.363 に答える