2011-01-13 41 views
0

は、私は次の文字列を持っている:NSStringを使用してこの文字列を解析するにはどうすればよいですか?

callback({"Outcome":"Success", "Message":null, "Identity":"Request", "Delay":0.002, "Symbol":"AAPL", "CompanyName":"Apple Inc.", "Date":"1\/13\/2011", "Time":"4:02:36 PM", "Open":344.6, "Close":345.93, "PreviousClose":344.42, "High":346.63, "Low":343.86, "Last":345.93, "Change":1.51, "PercentChange":0.438, "Volume":785960}) 

は、私は私の最後の文字列は、文字列の末尾にcallback(、最後)を含まないようにしたいです。このNSStringを変更するにはどうすればよいですか?

答えて

2

と呼ばれるNSMutableStringを作ります。すなわちNSMutableString *string = [NSMutableString stringWithString:myString];である。

次にstring = [string substringToIndex:[string length]-1];を入力してからstring = [string substringFromIndex:9];などを入力します。

またはNSStringインスタンスでNSMutableStringインスタンスを作成し、[string replaceOccurrencesOfString:@"callback(" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [string length])];[string replaceOccurrencesOfString:@")" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [string length])];を呼び出します。これが望ましいかもしれません。

いずれにしてもNSStringが必要な場合は、goodString = [NSString stringWithString:string];のような新しい文字列でNSStringインスタンスを作成します。

+0

NSMutableStringを使用していても、元の文字列は変更されません。 – Chuck

+0

@チャック:そうです。もちろん元の文字列は変更されていません。何かを突然変異させる必要もない。 NSMutableStringは必要ありません。私の投稿は残酷です。しかし、Alamはあなたができない「NSString」を修正できるという印象を受けているようです。 – SK9

1

NSString(NSMutableStringのみ)は変更できませんが、[string substringWithRange:NSMakeRange(9, [string length] - 10)]を使用できます。 NSMutableStringを実際に変更するには、2つのdeleteCharactersInRange:呼び出しを使用して、不要な部分をトリムする必要があります。

3

NSScannerはこの種のものに適しています。

NSString *json = nil; 
NSScanner *scanner = [NSScanner scannerWithString:fullString]; 
[scanner scanUpToString:@"{" intoString:NULL]; // Scan to where the JSON begins 
[scanner scanUpToString:@")" intoString:&json]; 

NSLog(@"json = %@", json); 
+0

または、を上にスキャンしてから(同じブラックホールにスキャンしてからスキャンしてください)。いずれにしても、JSONにa)が含まれていると(たとえば、文字列内で)これは失敗します。 –

関連する問題