ProgramingTip

NSString의 마지막 문자를 확인하는 방법

bestdevel 2020. 11. 29. 12:05
반응형

NSString의 마지막 문자를 확인하는 방법


객관적인 C에서 NSString *에 대해 질문하고 싶습니다. NSString * 객체의 마지막 문자를 확인할 수 있습니까?

예 :

NSString* data = @"abcde,";

if(data is end with ',') // I don't know this part
  // do sth

대단히 감사합니다.


NSString *data = @"abcde,";
if([data hasSuffix:@","]) // This returns true in this example
    // do something

는 NSString 프로그래밍 가이드 권장합니다

혹시라도 구매할 수 있습니다.

따라서 귀하의 예에서 :

NSString *data = @"abcde,";

// Create the predicate
NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"SELF endswith %@", @","];

// Run the predicate
// match == YES if the predicate is successful
BOOL match = [myPredicate evaluateWithObject:data];

// Do what you want
if (match) {
    // do something
}

글을 쓰는 데 약간의 긴 바람이 있습니까? 하지만 여러 곳에서이 작업을 수행하면 도우미 메서드로 쉽게 리팩토링 될 수 있습니다.

다음은 NSPredicate 문서에 대한 링크 입니다.

편집하다

나는 몇 가지 프로파일 링을 수행합니다 (아래 내 의견 참조). 어쨌든 이런 종류의 술어를 사용하는 대답을 여기에 애 둘 것입니다.


성능이 걱정되고 한 문자를 확인하려는 경우 -characterAtIndex : 메서드를 사용하는 것이 더 빠를 수 있습니다. -hasSuffix : 더 많은 작업을 수행해야하는 것보다 더 많은 작업을 수행해야합니다.

다음과 같이 카테고리를 사용하여 NSString에 메소드를 추가 할 수도 있습니다.

@interface NSString(StringUtilities)
    - (BOOL) endsWithCharacter: (unichar) c;
@end

@implementation NSString(StringUtilities)

    - (BOOL) endsWithCharacter: (unichar) c
    {
        NSUInteger length = [self length];
        return (length > 0) && ([self characterAtIndex: length - 1] == c);
    }

@end

// test it...
NSString *data = @"abcd,";
if ([data endsWithCharacter: L','])
{

}

물론 프로필을 작성해야합니다. 메소드에 endsWithCharacter를 넣음 더 많은 헤드를 전달하는 메시지를 추가하기 때문에 약력 링 할 때 더 많은 작업을 수행하지 않습니다.

이 모든 것은 아마도 대부분의 경우 조기 최적화 일 것입니다. 그러나 물론이 테스트를 1 초에 수천 번 수행하는 경우 문제가 될 수 있습니다 (이 경우 메시지 전달로 루프에서 직접 코드를 사용하고 싶을 것입니다. 단단한 내부 루프 내부는 좋은 계획이 아닙니다.)

참고 URL : https://stackoverflow.com/questions/3244996/how-to-check-the-last-char-of-an-nsstring

반응형