姓と名のイニシャルに変更したいです。
ありがとう!
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];
これはもっと簡潔かもしれませんが、OPを明確にしたかったのです:)したがって、すべての暫定変数とvar名。
これはそれを行います:
NSArray *components = [fullname componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSString *firstnameAndLastnameInitial = [NSString stringWithFormat:@"%@ %@.", [components objectAtIndex:0], [[components objectAtIndex:1] substringToIndex:1]];
これは、 fullname が NSString のインスタンスであり、空白で区切られた 2 つのコンポーネントが含まれていることを前提としているため、それも確認する必要があります。
このコード スニペットを使用できます。最初に を使用して文字列を分離しcomponentsSeparatedByString
、次に再び結合しますが、の最初の文字のみを取得しますLastname
NSString *str = @"Firstname Lastname";
NSArray *arr = [str componentsSeparatedByString:@" "];
NSString *newString = [NSString stringWithFormat:@"%@ %@.", [arr objectAtIndex:0], [[arr objectAtIndex:1] substringToIndex:1]];
名前の部分の配列を個別に取得します。
NSString *sourceName = ...whatever...;
NSArray *nameComponents =
[sourceName
componentsSeparatedByCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
次に、私は推測します:
NSString *compactName =
[NSString stringWithFormat:@"%@ %@.",
[nameComponents objectAtIndex:0],
[[nameComponents lastObject] substringToIndex:1]];
ミドル ネームはスキップされますが、「Jeffry」のように名前が 1 つしかない場合は、「Jeffry J.」が出力されます。objectAtIndex:0
空の文字列を渡すと、その配列が空になるため、取得しようとすると例外が発生します。したがって、チェックする必要があります[nameComponents count]
。