獲取NSString某一個字符串出現的位置

在NSString中方法:rangeOfString:可以獲得某一字符串首次在string中出現的range。

如果該子字符串多次出現在string中,則無法通過這個方法獲取字符串每次出現的位置。

在stackoverflow上翻了n多頁關於NSString的問題,終於找到了一個方法,可以獲取在string出現多次的子字符串每次出現的range。


-(NSRange)rangeOfString:(NSString*)subString inString:(NSString*)string atOccurrence:(int)occurrence
{
	int currentOccurrence = 0;
	NSRange	rangeToSearchWithin = NSMakeRange(0, [string length]);
	
	while (YES) 
	{
		currentOccurrence++;
		NSRange searchResult = [string rangeOfString:subString options:NULL range:rangeToSearchWithin];
		
		if (searchResult.location == NSNotFound) 
		{
			return searchResult;
		}
		if (currentOccurrence == occurrence) 
		{
			return searchResult;
		}
		
		int newLocationToStartAt = searchResult.location + searchResult.length;
		rangeToSearchWithin = NSMakeRange(newLocationToStartAt, string.length - newLocationToStartAt);
	}
}

調用這個方法,需要得知該子字符串在string中出現的次數。

我找了一下,貌似沒有在NSString中找到能夠獲取子串出現次數的方法,於是用了另外一個NSMutalbeString中的方法來獲取:

- (NSUInteger)replaceOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange;




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章