2012-07-03 10 views

Antwort

13
NSString* nameStr = @"Firstname Lastname"; 
NSArray* firstLastStrings = [nameStr componentsSeparatedByString:@" "]; 
NSString* firstName = [firstLastStrings objectAtIndex:0]; 
NSString* lastName = [firstLastStrings objectAtIndex:1]; 
char lastInitialChar = [lastName characterAtIndex:0]; 
NSString* newNameStr = [NSString stringWithFormat:@"%@ %c.", firstName, lastInitialChar]; 

So viel prägnanter bekommen könnte, aber ich wollte Klarheit für das OP :) Daher alle Zwischenvariablen und Var-Namen.

2

Sie diesen Code-Schnipsel verwenden können, erste separate Zeichenfolge componentsSeparatedByString verwenden, dann sie wieder beitreten, aber nur das erste Zeichen von Lastname

NSString *str = @"Firstname Lastname"; 
NSArray *arr = [str componentsSeparatedByString:@" "]; 
NSString *newString = [NSString stringWithFormat:@"%@ %@.", [arr objectAtIndex:0], [[arr objectAtIndex:1] substringToIndex:1]]; 
0

eine Anordnung der Teile des Namens einzeln holen:

NSString *sourceName = ...whatever...; 

NSArray *nameComponents = 
    [sourceName 
     componentsSeparatedByCharactersInSet: 
      [NSCharacterSet whitespaceCharacterSet]]; 

Dann, ich denke:

NSString *compactName = 
    [NSString stringWithFormat:@"%@ %@.", 
     [nameComponents objectAtIndex:0], 
     [[nameComponents lastObject] substringToIndex:1]]; 

, dass alle Mittelnamen überspringen werde, aber wenn es nur einen Namen gibt, wie Sag 'Jeffry', dann wird 'Jeffry J.' ausgegeben. Wenn Sie die leere Zeichenfolge übergeben, wird eine Ausnahme ausgelöst, wenn Sie versuchen, objectAtIndex:0 zu erhalten, da dieses Array leer ist. Also sollten Sie überprüfen [nameComponents count].

4

es Dies tun würde:

NSArray *components = [fullname componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
NSString *firstnameAndLastnameInitial = [NSString stringWithFormat:@"%@ %@.", [components objectAtIndex:0], [[components objectAtIndex:1] substringToIndex:1]]; 

Dies setzt voraus, dass Fullname eine Instanz von NSString und enthält zwei durch Leerzeichen getrennte Komponenten, so dass Sie auch für das überprüfen müssen.

Verwandte Themen