0

Xcode4.5のアプリケーションがあります。私のアプリケーションでは、ユーザーはFacebookのウォールに投稿できます。各投稿は、変数タイプ'id'の一意の投稿識別番号を返します。私のアプリの目的のために、この投稿ID番号を取得し、再フォーマットする必要があります。投稿IDの一般的な形式は「12345_678910」です(引用符は形式の一部です)。私がする必要があるのは、投稿IDの一部のみを含む新しい文字列を作成することです。具体的には(この例から)678910だけです。つまり、アンダーバーの後と最後の引用符の前のすべてです。

奇妙な部分は次のとおりです。実際の投稿IDと同じタイプの形式でNSStringの形式で偽の投稿IDを作成すると、その偽の投稿IDをフォーマットして、必要なものを正確に取得できます。しかし、実際の投稿IDである「id」型変数で同じコードを実行すると、異なる結果が得られます。以下の例を参照してください。

//result is the post id of type 'id' (the console displays it as "12345_67890")

NSString *resultString = [NSString stringWithFormat:@"%@",result];
         NSArray *resultComponents = [resultString componentsSeparatedByString:@"_"];
         NSString *remainingString = [resultComponents lastObject]; //this works
         NSString *finalString = [remainingString substringToIndex:[remainingString  
            length]-1]; //this doesn't work
         [DataController dc].postIDData = finalString;
         NSLog(@"%@",[DataController dc].postIDData); //the console reads 67890"
        }

したがって、上記のコードは、アンダーバー(私が欲しい)の後の数字の部分を生成しますが、それでも引用符が含まれています!NSString型の偽の結果文字列でこれと同じコードを使用すると、67890しか得られません。また、NSLogを実行して「resultString」[resultStringの長さ]の文字数をカウントすると、物理的に数える文字数よりも大きな値が得られます。私はここで何が起こっているのか本当に理解しておらず、それを修正する方法もわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

1

アンダースコアで分割した後、試してください

finalString = [remainingString stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];

応答に末尾の空白があるのではないかと思います。

于 2013-01-08T06:41:59.550 に答える