Ios 有没有有效的方法来替换NSString中的字符

Ios 有没有有效的方法来替换NSString中的字符,ios,replace,nsstring,html-escape-characters,Ios,Replace,Nsstring,Html Escape Characters,我有20行代码,它们替换了NSString的多个值,如下所示 [resultstring replaceOccurrencesOfString:@"&" withString:@"&" options:NSLiteralSearch range:NSMakeRange(0, [resultstring length]) ]; 问题是执行代码需要一些明显的时间(20毫秒)。 有没有更好的方法来编写NSString替换代码。replaceCu

我有20行代码,它们替换了
NSString
的多个值,如下所示

[resultstring
    replaceOccurrencesOfString:@"&"
    withString:@"&"
    options:NSLiteralSearch
    range:NSMakeRange(0, [resultstring length])
];
问题是执行代码需要一些明显的时间(20毫秒)。
有没有更好的方法来编写
NSString
替换代码。

replaceCurrencesofstring:…
将在每次调用该字符串时遍历该字符串

另一种可以加快替换速度的方法是手动遍历字符串一次,并在此过程中构建一个新字符串

下面是一个例子,尽管可能还有进一步优化的空间

- (NSString *)encodeEntity:(NSString *)string {
    NSUInteger length = string.length;
    NSMutableString *encodedString = [NSMutableString stringWithCapacity:length];
    unichar buffer[length + 1];
    [string getCharacters:buffer range:(NSRange){0, length}];
    for(NSUInteger i = 0; i < length; i++) {
        char current = buffer[i];
        switch(current) {
            case '&':  [encodedString appendString:@"&amp;"];        break;
            case '\"': [encodedString appendString:@"&quot;"];       break;
            case '\'': [encodedString appendString:@"&apos;"];       break;
            case '<':  [encodedString appendString:@"&lt;"];         break;
            case '>':  [encodedString appendString:@"&gt;"];         break;
            default:   [encodedString appendFormat:@"%c", current];  break;
        }
    }
    return encodedString;
}
-(NSString*)编码实体:(NSString*)字符串{
NSU整数长度=string.length;
NSMutableString*encodedString=[NSMutableString stringWithCapacity:length];
unichar缓冲区[长度+1];
[string getCharacters:缓冲区范围:(NSRange){0,length}];
对于(整数i=0;i

另外,如果您的具体问题是转义XML实体,那么这个问题可能很有用:

听起来您想转义HTML实体。看看这个,你可能会崩溃,实际上有一个镜头,他们称之为“编程”。