2011-08-11 5 views
0

나는이 두 NSData 객체 NSData는 다른 NSData의 하위 문자열입니까?

NSData *toScan = /* initialized somehow with "Hello, this world." */; 
NSData *toMatch = /* initialized somehow with "this" */; 

toMatch 바이트 toScan 바이트의 하위 집합 알 수있는 가장 좋은 방법은 무엇입니까

?

+0

문자열 toMatch가 toScan에서 발견 된 경우에만 strstr이 작동합니다. 하지만 toMatch가 "cdb"인 경우에는 어떻게해야합니까? 여전히 하위 집합이지만 strstr은이를 인식하지 못합니다. 아니면 그렇게되지 않을까요? 또한 공간 효율은 계산 효율보다 중요합니까? 바이트는 항상 사전 순으로 있습니까? –

+0

내 질문을 편집했습니다. –

답변

2

Snow Leopard 및 iOS 4.0에서 NSData는 원하는 작업을 수행하는 -rangeOfData:options:range:입니다.

또한 꽤 빠르다.

0

에서 ...이

strstr([[toScan identifier] bytes], [[toMatch identifier] bytes]); 
// returned bytes are null-terminated 

뭔가를하지만 객체 지향 환경에서 C-기능을 사용하는 가장 좋은 방법이 아니라고 생각 : 나는이 시점에서이 목적을 위해 C-기능을 사용

Elegant Algorithm for Parsing Data Stream Into Record

그건 당신이 찾고있는 무엇을 할 것입니다 : 다른 질문은, 내가 rangeOfData: 방법이있는 NSData 범주를 포함하는 대답을 썼다.

관련 문제