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
'ProgramingTip' 카테고리의 다른 글
Vim에서 검색 하이라이트를 제거하는 방법 (0) | 2020.11.29 |
---|---|
Python- 새로운 목록 / 줄 초기화 (0) | 2020.11.29 |
NSString의 마지막 문자를 확인하는 방법 (0) | 2020.11.29 |
Modernizr 파일을 헤드에 배치해야합니까? (0) | 2020.11.29 |
기본 Python 클라이언트 소켓 소켓 (0) | 2020.11.29 |