1

この形式の NSString があります。

"Key1-Value1,Key2-Value2,Key3-Value3,..."

キーのみが必要です(各コンマの後にスペースを入れます):

Key1、Key2、Key3 など

コンマを区切り文字として使用して文字列からコンポーネントの配列を作成し、その後、すべてのコンポーネントについて、「-」以降のすべての文字を抽出することを考えました。次に、配列要素をシリアル化します。しかし、これはパフォーマンスに関して非常に重くなるのではないかと心配しています。

正規表現を使用してこれを行う方法を知っていますか?

4

1 に答える 1

2

正規表現は、使用しているデータに大きく依存します。たとえば、キーまたは値がすべて数字であることを許可されている場合、またはスペースと句読点を含めることが許可されている場合は、正規表現を変更する必要があります。ただし、現在の例では、これは機能します。

NSString *example = @"Key1-Value1,Key2-Value2,Key3-Value3,...";
NSString *result = [example stringByReplacingOccurrencesOfString:@"(\\w+)-(\\w+),?" 
                                                      withString:@"$1, " 
                                                         options:NSRegularExpressionSearch
                                                           range:NSMakeRange(0, [example length])];
result = [result stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
NSLog(@"%@", result);
于 2011-09-12T15:47:04.133 に答える