2010-03-04 27 views
12

Tôi đã tìm kiếm giờ và không tìm thấy giải pháp cho vấn đề của mình. Tôi có một NSString trông giống như sau:Vị trí của một ký tự trong một NSString hoặc NSMutableString

"spacer": [ "value1", "value2"], "spacer": [ "value1", "value2"], ...

Điều tôi muốn làm là xóa ký tự [] khỏi chuỗi. Nó có vẻ là không thể với mục tiêu-c. Hầu hết các ngôn ngữ lập trình khác cung cấp các chức năng như strpos hoặc indexOf cho phép tôi tìm kiếm một ký tự hoặc chuỗi và xác định vị trí của nó. Nhưng dường như không có gì giống như thế này trong mục tiêu-c.

Có ai có ý tưởng về cách xóa các ký tự này không? Ngoài ra còn có [] ký tự trong chuỗi nên giữ nguyên, vì vậy tôi không thể sử dụng NSMutableString stringByReplacingOccurencesOfString: withString. Tôi cần phải tìm kiếm đầu tiên cho chuỗi spacer và sau đó loại bỏ chỉ hai ký tự [] tiếp theo.

Cảm ơn bạn đã trợ giúp tôi.

Trả lời

22

Để tìm các lần xuất hiện của một chuỗi trong chuỗi, hãy sử dụng các phương pháp rangeOfXXX trong lớp NSString. Sau đó, bạn có thể xây dựng NSRanges để trích xuất chuỗi con vv

Ví dụ này chỉ loại bỏ các tập đầu tiên của mở/ngoặc đóng trong chuỗi mẫu của bạn ...

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]"; 
NSLog(@"%@", original); 

NSRange startRange = [original rangeOfString:@"\["]; 
NSRange endRange = [original rangeOfString:@"]"]; 

NSRange searchRange = NSMakeRange(0, endRange.location); 
NSString *noBrackets = [original stringByReplacingOccurrencesOfString:@"\[" withString:@"" options:0 range:searchRange]; 
noBrackets = [noBrackets stringByReplacingOccurrencesOfString:@"]" withString:@"" options:0 range:searchRange]; 
NSLog(@"{%@}", noBrackets); 

Các String Programming Guide có thêm chi tiết.
Bạn cũng có thể sử dụng lớp NSScanner.

4

này đã làm việc cho tôi để giải nén tất cả mọi thứ để chỉ số của một nhân vật, trong trường hợp này '[':

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]"; 
NSRange range = [original rangeOfString:@"\["]; 
NSString *toBracket = [NSString stringWithString :[original substringToIndex:range.location] ]; 
NSLog(@"toBracket: %@", toBracket); 
Các vấn đề liên quan