我有一些文本被加載到NSString對象中,其中包含方括號中的註釋 - 我需要去掉方括號和它們中的所有內容,以便用戶僅顯示正文文本。在NSString中搜索方括號
但是,由於Objective-C依賴方括號來進行消息傳遞等,所以我在刪除它們時遇到了一些問題。
是否有一些使用方括號的特殊轉義字符(例如作爲'rangeOfString:'的參數)? Xcode反覆告訴我,沒有。
乾杯
我有一些文本被加載到NSString對象中,其中包含方括號中的註釋 - 我需要去掉方括號和它們中的所有內容,以便用戶僅顯示正文文本。在NSString中搜索方括號
但是,由於Objective-C依賴方括號來進行消息傳遞等,所以我在刪除它們時遇到了一些問題。
是否有一些使用方括號的特殊轉義字符(例如作爲'rangeOfString:'的參數)? Xcode反覆告訴我,沒有。
乾杯
您可以使用正則表達式來刪除子你想:
NSString *s = @"hi[bla]tototo[lalA123]a";
NSString *result = [s stringByReplacingOccurrencesOfString:@"\\[[\\w]+\\]"
withString:@""
options:NSRegularExpressionSearch|NSCaseInsensitiveSearch
range:NSMakeRange(0, [s length])];
NSLog(@"%@", result);
// output "hitototoa"
附:您可能需要調整正則表達式模式,如果您的註釋可能包含不符合'\ w'說明符的字符
你的意思是像@"["
和@"]"
?
Objective-C中的任何字符串必須在@"
和"
之間。
如果你有一個NSString在它兩個字符@「[篩選]」,那麼它可能會導致問題(例如,如果你使用它作爲參數傳遞給rangeOfString :),這是我需要做的。 –
真的不應該有任何問題@「」除了一個「非轉義」的標誌,你可以發佈你的代碼和你通過它運行的字符串嗎? –
我認爲弗拉基米爾基於正則表達式的答案很好,但我想解決關於使用rangeOfString的觀點,因爲OP聽起來很混亂。在NSString中使用方括號沒有問題,這與Objective C使用方括號進行消息傳遞無關。
這對我工作得很好:
NSString * a = @"Some [thing] here";
NSRange rangeOpen = [a rangeOfString:@"["];
NSRange rangeClose = [a rangeOfString:@"]"];
NSLog(@"%lu %lu, %lu %lu.",
(unsigned long)rangeOpen.location,
(unsigned long)rangeOpen.length,
(unsigned long)rangeClose.location,
(unsigned long)rangeClose.length);
# Logs "5 1, 11 1."
絕對在錢上,奇妙的東西人感謝你。 –