2012-07-03 12 views

Trả lời

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]; 

Đây có thể là nhiều hơn nữa súc tích, nhưng tôi muốn rõ ràng cho OP :) Do đó tất cả các biến tạm thời và tên var.

2

Bạn có thể sử dụng đoạn mã này, trước hết chuỗi riêng biệt sử dụng componentsSeparatedByString, sau đó tham gia cùng họ một lần nữa nhưng chỉ nhận được ký tự đầu tiên của Lastname

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

Nhận một mảng của các bộ phận của tên riêng:

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

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

Sau đó, tôi đoán:

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

Điều đó sẽ bỏ qua bất kỳ tên đệm, tuy nhiên nếu chỉ có một tên, như nói 'Jeffry' thì nó sẽ xuất 'Jeffry J.'. Nếu bạn vượt qua trong chuỗi rỗng sau đó nó sẽ nâng cao một ngoại lệ khi bạn cố gắng để có được objectAtIndex:0 vì mảng đó sẽ trống. Vì vậy, bạn nên kiểm tra [nameComponents count].

4

này sẽ làm điều đó:

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

này giả định rằng fullname là một thể hiện của NSString và chứa hai thành phần phân cách bởi khoảng trắng, vì vậy bạn sẽ cần phải kiểm tra cho rằng là tốt.

Các vấn đề liên quan