ios 开发中获取字符串中重复的字符的range
2017-06-22 21:18
239 查看
iOS 开发中经常会遇到处理字符串的问题,对于一个字符串经常会遇见里面包含重复的字符需要对重复的字符进行处理,下面的代码就是对重复字符进行处理的操作,具体代码如下所示:
/**
* 返回重复字符的location
*
* @param text 初始化的字符串
* @param findText 查找的字符
*
* @return 返回重复字符的location
*/
- (NSMutableArray *)getRangeStr:(NSString *)text findText:(NSString *)findText {
NSMutableArray *arrayRanges = [NSMutableArray
arrayWithCapacity:20];
if (findText == nil && [findText
isEqualToString:@""]) {
return nil;
}
NSRange rang = [text rangeOfString:findText];
if (rang.location !=
NSNotFound && rang.length !=
0) {
[arrayRanges addObject:[NSNumber
numberWithInteger:rang.location]];
NSRange rang1 = {0,0};
NSInteger location =
0;
NSInteger length =
0;
for (int i =
0;; i++)
{
if (0 == i) {
location = rang.location + rang.length;
length = text.length - rang.location - rang.length;
rang1 = NSMakeRange(location, length);
}else
{
location = rang1.location + rang1.length;
length = text.length - rang1.location - rang1.length;
rang1 = NSMakeRange(location, length);
}
rang1 = [text rangeOfString:findText
options:NSCaseInsensitiveSearch
range:rang1];
if (rang1.location ==
NSNotFound && rang1.length ==
0) {
break;
}else
[arrayRanges addObject:[NSNumber
numberWithInteger:rang1.location]];
}
return arrayRanges;
}
return nil;
}
在开发中,如果遇到遍历不同字符串在字符串中的位置,可能有重复可能没有重复,为了避免重复遍历对字符串设置。。。需要设置一个全局字典,将要查的字符串加进数组中,第二次同样的字符串进入getRangeStr的时候,如果数组中包含这个字符串,直接return。
如下:
/**
* 返回重复字符的location
*
* @param text 初始化的字符串
* @param findText 查找的字符
*
* @return 返回重复字符的location
*/
- (NSMutableArray *)getRangeStr:(NSString *)text findText:(NSString *)findText {
if ([self.findTextArr
containsObject:findText]) {// 避免重复查找同样的字符串
return nil;
}
[self.findTextArr
addObjectSafe:findText];
NSMutableArray *arrayRanges = [NSMutableArray
arrayWithCapacity:20];
if (findText == nil && [findText
isEqualToString:@""]) {
return nil;
}
NSRange rang = [text rangeOfString:findText];
if (rang.location !=
NSNotFound && rang.length !=
0) {
[arrayRanges addObject:[NSNumber
numberWithInteger:rang.location]];
NSRange rang1 = {0,0};
NSInteger location =
0;
NSInteger length =
0;
for (int i =
0;; i++)
{
if (0 == i) {
location = rang.location + rang.length;
length = text.length - rang.location - rang.length;
rang1 = NSMakeRange(location, length);
}else
{
location = rang1.location + rang1.length;
length = text.length - rang1.location - rang1.length;
rang1 = NSMakeRange(location, length);
a621
}
rang1 = [text rangeOfString:findText
options:NSCaseInsensitiveSearch
range:rang1];
if (rang1.location ==
NSNotFound && rang1.length ==
0) {
break;
}else
[arrayRanges addObject:[NSNumber
numberWithInteger:rang1.location]];
}
return arrayRanges;
}
return nil;
}
/**
* 返回重复字符的location
*
* @param text 初始化的字符串
* @param findText 查找的字符
*
* @return 返回重复字符的location
*/
- (NSMutableArray *)getRangeStr:(NSString *)text findText:(NSString *)findText {
NSMutableArray *arrayRanges = [NSMutableArray
arrayWithCapacity:20];
if (findText == nil && [findText
isEqualToString:@""]) {
return nil;
}
NSRange rang = [text rangeOfString:findText];
if (rang.location !=
NSNotFound && rang.length !=
0) {
[arrayRanges addObject:[NSNumber
numberWithInteger:rang.location]];
NSRange rang1 = {0,0};
NSInteger location =
0;
NSInteger length =
0;
for (int i =
0;; i++)
{
if (0 == i) {
location = rang.location + rang.length;
length = text.length - rang.location - rang.length;
rang1 = NSMakeRange(location, length);
}else
{
location = rang1.location + rang1.length;
length = text.length - rang1.location - rang1.length;
rang1 = NSMakeRange(location, length);
}
rang1 = [text rangeOfString:findText
options:NSCaseInsensitiveSearch
range:rang1];
if (rang1.location ==
NSNotFound && rang1.length ==
0) {
break;
}else
[arrayRanges addObject:[NSNumber
numberWithInteger:rang1.location]];
}
return arrayRanges;
}
return nil;
}
在开发中,如果遇到遍历不同字符串在字符串中的位置,可能有重复可能没有重复,为了避免重复遍历对字符串设置。。。需要设置一个全局字典,将要查的字符串加进数组中,第二次同样的字符串进入getRangeStr的时候,如果数组中包含这个字符串,直接return。
如下:
/**
* 返回重复字符的location
*
* @param text 初始化的字符串
* @param findText 查找的字符
*
* @return 返回重复字符的location
*/
- (NSMutableArray *)getRangeStr:(NSString *)text findText:(NSString *)findText {
if ([self.findTextArr
containsObject:findText]) {// 避免重复查找同样的字符串
return nil;
}
[self.findTextArr
addObjectSafe:findText];
NSMutableArray *arrayRanges = [NSMutableArray
arrayWithCapacity:20];
if (findText == nil && [findText
isEqualToString:@""]) {
return nil;
}
NSRange rang = [text rangeOfString:findText];
if (rang.location !=
NSNotFound && rang.length !=
0) {
[arrayRanges addObject:[NSNumber
numberWithInteger:rang.location]];
NSRange rang1 = {0,0};
NSInteger location =
0;
NSInteger length =
0;
for (int i =
0;; i++)
{
if (0 == i) {
location = rang.location + rang.length;
length = text.length - rang.location - rang.length;
rang1 = NSMakeRange(location, length);
}else
{
location = rang1.location + rang1.length;
length = text.length - rang1.location - rang1.length;
rang1 = NSMakeRange(location, length);
a621
}
rang1 = [text rangeOfString:findText
options:NSCaseInsensitiveSearch
range:rang1];
if (rang1.location ==
NSNotFound && rang1.length ==
0) {
break;
}else
[arrayRanges addObject:[NSNumber
numberWithInteger:rang1.location]];
}
return arrayRanges;
}
return nil;
}
相关文章推荐
- ios 开发中获取字符串中重复的字符的rang
- iOS开发-获取字符串中多个相同字符的位置index
- iOS开发之获取一段字符串中的中文字和中文字符
- iOS开发之获取一段字符串中的中文字和中文字符
- IOS开发判断在字符串中是否包含相应的字符
- ios开发——NSString如何从标准输入设备获取字符串
- iOS中英文混排,获取字符串长度(中文字符数)
- iOS 开发中判断字符串是否为空字符的方法
- IOS开发中判断字符串是否为空字符的方法
- iOS判断字符串中含某一个字符if ([keyName rangeOfString:@"_"].location==NSNotFound) return keyName;
- IOS开发判断在字符串中是否包含相应的字符
- iOS 字符串 获取 单词及range
- iOS 获取字符串的首、尾字符
- IOS 开发中判断字符串是否为空字符的方法
- iOS中英文混排,获取字符串长度(中文字符数)
- 获取字符串中的第一个不重复的字符
- IOS开发中判断字符串是否为空字符的方法
- IOS 开发中判断字符串是否为空字符的方法
- IOS 开发中判断字符串是否为空字符的方法
- IOS 开发中判断字符串是否为空字符的方法