0

ある時点で置き換えたい html コードがいくつかあります。

そのような

NSString *stringSHOW = @"width="353" height="500" width="131" height="204" width="777" width="369" width="888"/>";

このようなもの。しかし、私はすべてを交換したい[ width="any" to width="300" ]

これを行う方法はありますか?

4

3 に答える 3

2

NSRegularExpressionのドキュメントとNSString正規表現を取るメソッドを見てください。

于 2012-07-06T06:49:38.057 に答える
0
- (NSString *)updateString:(NSString *)inputString withString:(NSString *)stringToReplace {

    NSArray *components = [inputString componentsSeparatedByString:@" "];
    NSMutableArray *mutableComponents = [[components mutableCopy] autorelease];

    for (NSString *componentString in components) {

        NSMutableString *mutableString = [[componentString mutableCopy] autorelease];
        NSRange replaceRangeFirstOccurenceStart = [mutableString rangeOfString:@"width=\""];
        if (replaceRangeFirstOccurenceStart.location == NSNotFound) {
            NSLog(@"String not found in component");
        }
        NSMutableString *replaceString = [NSMutableString string];
        for (int i = 0; i < replaceRangeFirstOccurenceStart.length; i ++) {
            [replaceString appendString:@"_"];
        }
        NSMutableString *modifiedString = [mutableString stringByReplacingCharactersInRange:replaceRangeFirstOccurenceStart withString:replaceString];
        NSRange replaceRangeEnd = [modifiedString rangeOfString:@"\""];
        NSRange rangeToChange = NSMakeRange(replaceRangeFirstOccurenceStart.length - 1, replaceRangeEnd.location + replaceRangeEnd.length - replaceRangeFirstOccurenceStart.length + 1);        
        NSString *updatedString = [mutableString stringByReplacingCharactersInRange:rangeToChange withString:[NSString stringWithFormat:@"\"%@\"", stringToReplace]];
        [mutableComponents replaceObjectAtIndex:[components indexOfObject:componentString] withObject:updatedString];
    }
    return [mutableComponents componentsJoinedByString:@" "];
}

NSString *stringShow = @"width=\"355\" width=\"200\"";
[self updateString:stringShow withString:@"34501"];

このメソッドを完全に抽象化し、渡したものを置き換えることができるようにするために、 @"width=\"" および @"\"" の場合、区切り文字列をパラメーターとして送信することもできます。

于 2012-07-06T08:55:55.310 に答える
0
NSString *newStringShow = [stringShow stringByReplacingOccurrencesOfString:@"any"withString:@"300"];
于 2012-07-06T06:53:45.443 に答える