NSString에서 값을 얻으려면 @"value:hello World:value"
무엇을 사용해야합니까?
내가 원하는 반환 값은 @"hello World"
입니다.
답변
옵션 1:
NSString *haystack = @"value:hello World:value";
NSString *haystackPrefix = @"value:";
NSString *haystackSuffix = @":value";
NSRange needleRange = NSMakeRange(haystackPrefix.length,
haystack.length - haystackPrefix.length - haystackSuffix.length);
NSString *needle = [haystack substringWithRange:needleRange];
NSLog(@"needle: %@", needle); // -> "hello World"
옵션 2 :
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^value:(.+?):value$" options:0 error:nil];
NSTextCheckingResult *match = [regex firstMatchInString:haystack options:NSAnchoredSearch range:NSMakeRange(0, haystack.length)];
NSRange needleRange = [match rangeAtIndex: 1];
NSString *needle = [haystack substringWithRange:needleRange];
이것은 당신의 다소 사소한 경우에 대해 약간 넘어 설 수 있습니다.
옵션 3 :
NSString *needle = [haystack componentsSeparatedByString:@":"][1];
이것은 분할하는 동안 세 개의 임시 문자열과 배열을 만듭니다.
모든 스 니펫은 검색된 내용이 실제로 문자열에 포함되어 있다고 가정합니다.
답변
다음은 약간 덜 복잡한 대답입니다.
NSString *myString = @"abcdefg";
NSString *mySmallerString = [myString substringToIndex:4];
substringWithRange 및 substringFromIndex도 참조하십시오.
답변
다음은 원하는 작업을 수행 할 수있는 간단한 기능입니다.
- (NSString *)getSubstring:(NSString *)value betweenString:(NSString *)separator
{
NSRange firstInstance = [value rangeOfString:separator];
NSRange secondInstance = [[value substringFromIndex:firstInstance.location + firstInstance.length] rangeOfString:separator];
NSRange finalRange = NSMakeRange(firstInstance.location + separator.length, secondInstance.location);
return [value substringWithRange:finalRange];
}
용법:
NSString *myName = [self getSubstring:@"This is my :name:, woo!!" betweenString:@":"];
답변
이것도 사용
NSString *ChkStr = [MyString substringWithRange:NSMakeRange(5, 26)];
참고-귀하 NSMakeRange(start, end)
는이어야합니다 NSMakeRange(start, end- start)
.
답변
다음은 @Regexident Option 1과 @Garett 답변의 작은 조합으로 접두사와 접미사 사이에 MORE … ANDMORE 단어가있는 강력한 문자열 커터를 얻을 수 있습니다.
NSString *haystack = @"MOREvalue:hello World:valueANDMORE";
NSString *prefix = @"value:";
NSString *suffix = @":value";
NSRange prefixRange = [haystack rangeOfString:prefix];
NSRange suffixRange = [[haystack substringFromIndex:prefixRange.location+prefixRange.length] rangeOfString:suffix];
NSRange needleRange = NSMakeRange(prefixRange.location+prefix.length, suffixRange.location);
NSString *needle = [haystack substringWithRange:needleRange];
NSLog(@"needle: %@", needle);