Đây là các mẫu NSStrings của tôi (được phân tích thành một mảng), được đơn giản hóa.Trích xuất các giá trị đơn lẻ từ một NSString được phân tích cú pháp trong mục tiêu-c
Đối tượng chuỗi duy nhất được phân tích như "STRING1, STRING2 sau đó NGÀY THỜI GIAN sau đó - A: VALUE", ví dụ:
The name of first value, first 17/04/2013 11:30:00 - A:30.0 // sometimes there is a comma after first string
The name of second value 17/04/2013 11:00:00 - A:20.0 // sometimes there is NOT a comma after first string
Name of third value 17/04/2013 10:30:00 - A:40.0
Fourth 17/04/2013 09:40:00 - A:50.0
Fifth value 17/04/2013 05:00:00 - A:10.0
Vâng, tôi cần phải trích xuất các giá trị riêng của STRING hoặc STRING, STRING:
The name of first value, first
The name of second value
Name of third value
Fourth
Fifth value
sau đó DATE và TIME
17/04/2013 11:30:00
17/04/2013 11:00:00
17/04/2013 10:30:00
17/04/2013 09:40:00
17/04/2013 05:00:00
cuối cùng, GIÁ TRỊ duy nhất:
30.0
20.0
40.0
50.0
10.0
EDIT: Tôi đang cố gắng sử dụng một mã từ Martin R cho phân tích cú pháp * allValues tôi:
The *allValues array is something like:
(
"The name of first value, first 17/04/2013 11:30:00 - A:30.0",
"The name of second value 17/04/2013 11:00:00 - A:20.0",
"Name of third value 17/04/2013 10:30:00 - A:40.0",
"Fourth 17/04/2013 09:40:00 - A:50.0",
"Fifth value 17/04/2013 05:00:00 - A:10.0"
)
và đây là đoạn code để trích xuất các giá trị duy nhất:
NSMutableArray *allValues = [parsedFeed valueForKey:@"values"];
for (int i=1; i < [allValues count]; i++) {
NSString *string = [allValues objectAtIndex:i];
NSString *pattern = @"(.*) (\\d{2}/\\d{2}/\\d{4} \\d{2}:\\d{2}:\\d{2}) - A:(.*)";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL];
NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
if (match != nil) {
NSString *s1 = [string substringWithRange:[match rangeAtIndex:1]];
NSString *s2 = [string substringWithRange:[match rangeAtIndex:2]];
NSString *s3 = [string substringWithRange:[match rangeAtIndex:3]];
NSLog(@"First part: %@", s1);
NSLog(@"Second part: %@", s2);
NSLog(@"Third part: %@", s3);
}
}
Nhưng trong trường hợp này tôi không thể nhận được bất kỳ kết quả NSLog nào (match == nil). Chuyện gì vậy? Cảm ơn!
(http: // whathaveyoutried. com) Chúng tôi không ở đây để giải quyết vấn đề của bạn cho bạn nhưng để giúp bạn với các vấn đề cụ thể mà bạn đang mắc kẹt trong khi cố gắng giải quyết vấn đề. Bạn cũng có thể muốn xem [FAQ] (http://stackoverflow.com/questions/how-to-ask) –