3

で文字列を分離する必要があります&が、でではありません&

最初に置き換えてから分離するのではなく、これをコード化するよりエレガントな方法はあり&ますか? このような...

query = [query stringByReplacingOccurrencesOfString:@"&" withString:@"~~~"];
NSArray * kvpairs = [query componentsSeparatedByString:@"&"];

NSMutableArray *mArr = [[NSMutableArray alloc] init];
for (NSString *kvp in kvpairs) {
    [mArr addObject:[kvp stringByReplacingOccurrencesOfString:@"~~~" withString:@"&"]];
}
kvpairs = [NSArray arrayWithArray:mArr];
[mArr release];
4

3 に答える 3

3

に一致するが に一致しないNSRegularExpression正規表現の文字列を列挙するために使用できます。これは現在の方法よりも面倒ですが、元の文字列を変更せずに機能し、トークン値に依存しないため、より正確です。&&@"&(?!amp;)"

このメソッドへの入力を制御し、それ~~~が正常に表示されないことを保証できる場合は、 を使用しても問題ありません~~~ただし、入力を制御しない場合は、変更せずに文字列を解析するようにしてください。

于 2012-04-30T21:11:08.813 に答える
1

~~~クエリで文字列が発生しないことが 100% 確実である限り、実際には何も問題はありません。

そうでない場合、次のステップは、文字列を解析して配列にするメソッドを実装することです。このメソッドでは、各 & を見つけて、その後に amp; が続くかどうかを確認できます。ある場合は次へ、そうでない場合はそこで弦を切って繰り返します。

于 2012-04-30T20:24:02.070 に答える
0

HTML エンティティと参照は、URL にぶら下がっているのは本当に良いことではありません。HTML エンティティを使用する必要がある非常に正当な理由がない限り、アンパサンドをエンコードする URL で「%26」を使用することをお勧めします。

そうは言っても、'&' が唯一の HTML エンティティまたは参照ではない場合、問題が発生するため、'&' が唯一のものであることが確実でない限り、より堅牢なソリューションが必要になります。

于 2012-04-30T21:26:59.850 に答える