替换变量子串

时间:2013-03-30 18:31:01

标签: iphone ios parsing

我有这个字符串:<div id="attachment_16696" class="wp-caption alignnone" style="width: 460px">

我希望:<div id="attachment_16696" class="wp-caption alignnone" style="width: 275px">

我的工作差不多。唯一的问题是,当它的例如1000px时,因为它不匹配它不起作用,如果它不是460px我想如何处理我想要它260px

2 个答案:

答案 0 :(得分:3)

以您指定的格式提供时,以下代码使用NSRegularExpression类替换divs HTML标记的width style属性:

// Takes Div markup in the following formats:
// <div id="something" class="something" style="width: Xpx">
// <div id="something" class="something" width="X">
// And replaces X with desired value.
- (NSString *)setDivMarkup:(NSString *)markup width:(NSInteger)width
{
    NSString *regexToReplaceWidth = @"width(:|=)(\")?\\s*\\d+\\s*(px)?";

    NSError *error = NULL;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexToReplaceWidth
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];

    return [regex stringByReplacingMatchesInString:markup
                                           options:0
                                             range:NSMakeRange(0, markup.length)
                                      withTemplate:[NSString stringWithFormat:@"width$1$2%d$3", width]];
}

答案 1 :(得分:1)

使用正则表达式:string.replace(/width:\s*\d+px/, 'width: 275px')

编辑: 再想一想,如果这只是更大字符串的一部分,您可能不希望用275px(或260px)替换所有宽度。你仍然应该使用一个正则表达式,但是如果没有看到它所处的上下文,并且知道你做了什么和不想要替换它,我不确定它究竟会找到什么。