2013-08-02 4 views
0

나는 사용자 전체 이름이 포함 된 NSString입니다. 일부 이름은 표준 첫 번째 및 마지막 형성 (카일 Begeman)에 있으며 다른 이름은 단 하나의 이름 (TechCrunch)입니다.문자열에서 이름과 마지막 이니셜을 가져옵니다.

이름을 그대로 사용하고 성을 처음으로 붙잡는 방법과 이름이 하나뿐이라면 전체 이름을 붙이시겠습니까?

기본적으로 나는 위의 이름을 Kyle B. 또는 TechCrunch로 바꾸기를 원합니다. substringToIndex를 사용

NSString *username = @"Kyle Begeman" 
NSString *otherUserName = @"TechCrunch" 

converted to 

@"Kyle B" 

// No conversion because it is a single word name 
@"TechCrunch" 

내가 전체 문자열의 첫 글자를 잡을 수 있고, 내가 배열로 @" " 공백으로 문자열을 분리하는 방법이 알고 있지만 쉽게 결과를 생성하는 방법을 알아낼 수있는 방법이다 그것이 필요한 방식.

도움이 될 것입니다.

+1

다음을 확인하십시오 : http://stackoverflow.com/questions/1778227/string-manipulation-in-objective-c –

답변

2
(NSString*)firstNameWithInitial:(NSString*)userName { 

    NSArray *array = [userName componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
    array = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != ''"]]; 
    NSString *firstName = [array objectAtIndex:0]; 

    NSString finalNameString; 
    if ([array count] > 1) { 
     NSString *lastNameInitial = [[array objectAtIndex:1] substringToIndex:1]; 
     finalNameString = [firstName stringByAppendingString:[NSString stringWithFormat:@" %@", lastNameInitial]]; 
    else { 
     finalNameString = firstName; 
    } 

    return finalNameString; 
} 

이 기능은 당신이 필요로 반환해야합니다. 배열에있는 객체의 수를 확인하여 이름이 2 개 이상인 사용자와 함께 작동하도록이 객체를 수정할 수 있습니다.

2

문자열에서 첫 번째 공백의 위치 pos을 찾습니다. 공백이 없거나 공백이 문자열의 마지막 문자 인 경우 전체 문자열을 반환합니다. 그렇지 않으면, 포함, 0에서 pos+1의 범위에서 문자열을 반환 :

NSRange range = [str rangeOfString:@" "]; 
if (range.location == NSNotFound || range.location == str.length-1) { 
    return str; 
} else { 
    return [str substringToIndex:range.location+1]; 
} 
0

NSScanner를 사용하여 하위 문자열을 찾을 수 있습니다.

NSString *name = @"Some name"; 
NSString *firstName; 
NSString *lastName; 
NSScanner *scanner = [NSScanner scannerWithString:name]; 
[scanner scanUpToString:@" " intoString:&firstName]; // Scan all characters up to the first space 
[scanner scanUpToString:@"" intoString:&lastName]; // Scan remaining characters 

if (lastName != nil) { 
    // It was no space and lastName is empty 
} else { 
    // There was at least one space and lastName contains a string 
} 
관련 문제