iOS - разобрать строку, используя пробел - PullRequest
0 голосов
/ 03 ноября 2011

Я новичок в iOS, поэтому прошу прощения, если это вопрос начального уровня.

У меня есть строка "hu_HU Hungary: Hungarian", и я хочу поместить ее в массив типа {"hu", "HU", "Hungary: Hungarian"}.Как бы я проанализировал это, чтобы удалить пробел и подчеркивание?

Ответы [ 5 ]

2 голосов
/ 03 ноября 2011

Использование компонентовSeparatedByCharactersInSet: метод NSString

0 голосов
/ 09 июля 2012

Все эти ответы имеют неприятную проблему.Они предполагают, что элементы разделены одним и только одним пробелом.

NSString *theStr = @"hu_HU Hungary:Hungarian";
NSArray  *pieces = [theStr componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @"_ "]];
//pieces = {"hu", "HU", "Hungary:Hungarian"}

NSString *theStr = @"hu_HU  Hungary:Hungarian"; // note extra space
NSArray  *pieces = [theStr componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @"_ "]];
//pieces = {"hu", "HU", " ", "Hungary:Hungarian"}
0 голосов
/ 03 ноября 2011

Вот вы:

NSString *myString = @"hu_HU Hungary:Hungarian";
myString = [myString stringByReplacingOccurrencesOfString:@"_" withString:@" "];
NSArray *myArray = [myString componentsSeparatedByString:@" "];
0 голосов
/ 03 ноября 2011
NSString *theStr = @"hu_HU Hungary:Hungarian";
NSArray  *pieces = [theStr componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @"_ "]];
//pieces = {"hu", "HU", "Hungary:Hungarian"}

pieces = [theStr componentsSeparatedByCharactersInSet: [[NSCharacterSet  alphanumericCharacterSet] invertedSet]];
//pieces = {"hu", "HU", "Hungary", "Hungarian"}
//the motivation for this is a better defined set of non-alphanumeric characters
0 голосов
/ 03 ноября 2011

Чтобы получить желаемый эффект, вы должны изменить '_' на '' или наоборот.Затем вы можете использовать компонентыSeparatedByString, например так:

NSString *source = @"hu_HU Hungary:Hungarian";
source = [source stringByReplacingOccurrencesOfString:@"_" withString:@" "];
NSArray *components = [source componentsSeparatedByString:@" "];
NSLog(@"%@",components);
...