2013-08-29 9 views

risposta

16

è possibile enumerare le parole della stringa e modificare ogni parola separatamente. Questo funziona anche se le parole sono separate da altri personaggi di un carattere di spazio:

NSString *str = @"dino mcCool. foo-bAR"; 
NSMutableString *result = [str mutableCopy]; 
[result enumerateSubstringsInRange:NSMakeRange(0, [result length]) 
          options:NSStringEnumerationByWords 
         usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { 
     [result replaceCharactersInRange:NSMakeRange(substringRange.location, 1) 
           withString:[[substring substringToIndex:1] uppercaseString]]; 
}]; 
NSLog(@"%@", result); 
// Output: Dino McCool. Foo-BAR 
+0

Non conoscevo NSStringEnumerationByWords ma è localizzato? – tdelepine

+0

@tdelepine: Esiste un'opzione NSStringEnumerationLocalized che è possibile aggiungere: * "Fa in modo che l'enumerazione si verifichi utilizzando le impostazioni internazionali predefinite dell'utente Ciò non fa differenza nell'enumerazione di righe, paragrafi o caratteri composti, ma può essere utilizzata per parole o frasi . "* –

+0

grazie per questo post – tdelepine

2

Prova questa

- (NSString *)capitilizeEachWord:(NSString *)sentence { 
    NSArray *words = [sentence componentsSeparatedByString:@" "]; 
    NSMutableArray *newWords = [NSMutableArray array]; 
    for (NSString *word in words) { 
     if (word.length > 0) { 
      NSString *capitilizedWord = [[[word substringToIndex:1] uppercaseString] stringByAppendingString:[word substringFromIndex:1]]; 
      [newWords addObject:capitilizedWord]; 
     } 
    } 
    return [newWords componentsJoinedByString:@" "]; 
} 
+0

Basta notare che gli spazi multipli sono ridotti a un unico spazio. –

+0

@ Martinin, è un problema? – NeverBe

+1

Era solo un'osservazione, perché 'capitalizedString' conserva tutti gli spazi. –

Problemi correlati