2013-04-15 66 views
3

我有以下方法從一個字符串中刪除HTML標記和不想要的字符:當案件刪除HTML標籤和不想要的字符中的iOS

-(NSString *) stringByStrippingHTML: (NSString*) s { 
NSRange r; 
while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) 
    s = [s stringByReplacingCharactersInRange:r withString:@""]; 
while ((r = [s rangeOfString:@"&#8217;" options:NSRegularExpressionSearch]).location != NSNotFound) 
    s = [s stringByReplacingCharactersInRange:r withString:@"\'"]; 
while ((r = [s rangeOfString:@"&#8221;" options:NSRegularExpressionSearch]).location != NSNotFound) 
    s = [s stringByReplacingCharactersInRange:r withString:@"\""]; 
while ((r = [s rangeOfString:@"&#8220;" options:NSRegularExpressionSearch]).location != NSNotFound) 
    s = [s stringByReplacingCharactersInRange:r withString:@"\""]; 
while ((r = [s rangeOfString:@"&#8230;" options:NSRegularExpressionSearch]).location != NSNotFound) 
    s = [s stringByReplacingCharactersInRange:r withString:@"..."]; 
while ((r = [s rangeOfString:@"&#8211;" options:NSRegularExpressionSearch]).location != NSNotFound) 
    s = [s stringByReplacingCharactersInRange:r withString:@"-"]; 

return s; 
} 

我有太多的,這怎麼能更完成優雅的時尚?

回答

1

我相信NSString有一些內置的方法。 Check this answer out.

+0

我可以使用別人所做的,但我想知道我現在可以做些什麼。感謝您的答覆! – Carmichael

+0

我會將您的每個案例添加到自定義字符集中,然後根據該字符集剝離字符串;而不是每種情況都有一個while循環。 – Tyler

+1

@TylerAndFriends字符集在這種情況下不起作用,因爲應該被替換的字符串包含具有多個字符的序列。如果您想要替換所有出現的&#8211,您不希望替換所有出現的&&,##,8#等,但是這些字符以特定順序出現的所有事件。 – omz

0

除了第一種情況,您可以像[s stringByReplacingOccurrencesOfString:"&#8221;" withString:@"\""];一樣使用。

1

google-toolbox-for-mac庫(是的,這也適用於iOS)有一些NSString類別方法可以更有效地避免和號編碼字符。看看GTMNSString+HTML

這不會處理第一種情況(剝離HTML標籤),但它應該是一個更快,更全面的解決方案,您正在做的其他替代品。

+0

我試過了,但它沒有得到預期的不需要的字符。我不知道爲什麼。 – Carmichael