Tôi muốn thay đổi tên thành họ và tên cuối cùng.Tôi có một NSString như thế này: "Firstname LastName". Làm cách nào để chuyển đổi nó thành "Firstname L."?
Cảm ơn!
Tôi muốn thay đổi tên thành họ và tên cuối cùng.Tôi có một NSString như thế này: "Firstname LastName". Làm cách nào để chuyển đổi nó thành "Firstname L."?
Cảm ơn!
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.
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]];
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]
.
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.
'split()' chuỗi, lấy chuỗi đầu tiên và ký tự đầu tiên 'string.charAt (0)' của chuỗi thứ hai và một dấu chấm, và ghép chúng lại. –