2014-01-08 3 views
0

Я получаю строку от веб-службы, например: @ "Текущий адрес Narveer Tanaji Malusare Road, Dandekar Pool, Dattavadi, Pune, Maharashtra 411030, India". Теперь я хочу удалить строку после третьей запятой, чтобы адрес выглядел так: @ "Текущий адрес Narveer Tanaji Malusare Road, Dandekar Pool, Dattavadi"; и удалите третью запятую. Пожалуйста, помогите мне.Как удалить строку после третьей запятой (,) из строки в iOS?

Спасибо

+0

Что вы попробовали? Всегда ли будут запятые? – Wain

+0

Да, потому что адрес исходит от google api. – user968597

+2

'NSRegularExpression' может быть способом. 'componentsSeparatedByString', с реконструкцией после этого может быть другим способом. Что вы пробовали? – Larme

ответ

2

использование componentsSeparatedByString:

NSString *list = @"current address is Narveer Tanaji Malusare Road, Dandekar Pool, Dattavadi, Pune, Maharashtra 411030, India"; 
NSArray *listItems = [list componentsSeparatedByString:@","]; 

// produces an array { @"Karin", @"Carrie", @"David"" }. 

// здесь проверить, если listItems.count> = 3

NSString* reducedString = [NSString stringWithFormat:@"%@, %@, %@",[listItems objectAtIndex:0],[listItems objectAtIndex:1],[listItems objectAtIndex:2] ]; 
+1

Лучше, чем другой ответ , но 'componentsJoinedByString' лучше, чем вручную воссоздать строку. – Abizern

+0

Thanx Meronix ... – user968597

0

Вы можете добиться того, что вы хотите, используя основные NSString методы.

Я просто написал метод, который делает именно то, что вы спрашиваете:

-(NSString *) clearStringAfterThirdComma: (NSString *) originalString { 

    NSMutableString *clearedString = [originalString mutableCopy]; 

    NSInteger commaCount = 0; 

    // iterate thru each character of the string 

    for (NSInteger i = 0; i < originalString.length; i++) { 

     NSString *subString = [originalString substringWithRange:NSMakeRange(i, 1)]; 

     if ([subString isEqualToString:@","]) { 

      commaCount++; 

      if (commaCount == 3) { 
       [clearedString deleteCharactersInRange:NSMakeRange(i, originalString.length - i)]; 
       break; 
      } 
     } 
    } 

    return clearedString; 
} 
0

Я знаю, что это был дан ответ, но это меня беспокоит, так вот мое решение;

Вот метод:

- (NSString *)shortenedAddress:(NSString *)address { 
    // Turn the string into an array of each part separated by a comma 
    NSArray *components = [address componentsSeparatedByString:@","]; 

    // No need to shorten the address if there are three items or less 
    if ([components count] < 4) { 
     return address; 
    } 

    // Create a range object for the first three items in the array 
    NSRange range; 
    range.location = 0; 
    range.length = 3; 

    return [[components subarrayWithRange:range] componentsJoinedByString:@","]; 
} 

И если вы проверить его с этим:

NSString *fullAddress = @"current address is Narveer Tanaji Malusare Road, Dandekar Pool, Dattavadi, Pune, Maharashtra 411030, India"; // More than three items 
NSString *partialAddress = @"current address is Narveer Tanaji Malusare Road, Dandekar Pool"; // Less than three items 

NSLog(@"Full Address: %@", [self shortenedAddress:fullAddress]); 
NSLog(@"Partial Address: %@", [self shortenedAddress:partialAddress]); 

дает следующий вывод в консоли:

Full Address: current address is Narveer Tanaji Malusare Road, Dandekar Pool, Dattavadi

Partial Address: current address is Narveer Tanaji Malusare Road, Dandekar Pool

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

Смежные вопросы