5

姓と名のイニシャルに変更したいです。

ありがとう!

4

4 に答える 4

14
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名。

于 2012-07-03T22:25:01.060 に答える
4

これはそれを行います:

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

これは、 fullname が NSString のインスタンスであり、空白で区切られた 2 つのコンポーネントが含まれていることを前提としているため、それも確認する必要があります。

于 2012-07-03T22:27:01.083 に答える
2

このコード スニペットを使用できます。最初に を使用して文字列を分離しcomponentsSeparatedByString、次に再び結合しますが、の最初の文字のみを取得しますLastname

NSString *str = @"Firstname Lastname";
NSArray *arr = [str componentsSeparatedByString:@" "];
NSString *newString = [NSString stringWithFormat:@"%@ %@.", [arr objectAtIndex:0], [[arr objectAtIndex:1] substringToIndex:1]];
于 2012-07-03T22:24:58.780 に答える
0

名前の部分の配列を個別に取得します。

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]

于 2012-07-03T22:25:11.317 に答える