处理、获取两个字符串之间的字符串

处理、获取两个字符串之间的字符串:

//字符串匹配
- (NSArray *)stringMatcher:(NSString *)matchStr string:(NSString *)str{
    //在str中搜索matchStr并返回matchStr下标
    NSInteger matchStrLehgth = matchStr.length;
    NSInteger strLength = str.length;
    NSMutableArray *indexArray = [[NSMutableArray alloc]init];
    for (int index = 0; index <= (strLength - matchStrLehgth); index ++) {
        NSRange range = {index,matchStr.length};
        if ([matchStr isEqualToString:[str substringWithRange:range]]) {
            [indexArray addObject:[NSString stringWithFormat:@"%d",index]];
        }
    }
    return [NSArray arrayWithArray:indexArray];
}

//处理所有两个字符串中间的子串
- (NSMutableAttributedString *)findSubString:(NSString *)string beginStr:(NSString *)beginStr endStr:(NSString *)endStr{
    NSMutableAttributedString *attributed = [[NSMutableAttributedString alloc] initWithString:string];
    NSDictionary *dic = @{NSFontAttributeName : [UIFont fontWithName:FontTypePingFangMe size:16]};
    
    NSArray<NSString *> *indexArray = [self stringMatcher:beginStr string:string];
    for (NSString *str in indexArray) {
        int index = [str intValue];
        NSString *str = [string substringFromIndex:index + beginStr.length];
        NSArray<NSString *> *endArray = [self stringMatcher:endStr string:str];
        if (endArray.count == 0) {
            return nil;
        }else{
            int endIndex = [endArray[0] intValue];
            NSRange range = {index + beginStr.length,(endIndex + index + beginStr.length) - (index + beginStr.length)};
            [attributed addAttributes:dic range:range];
        }
    }
    return attributed;
}

使用:

NSString *priceStr = @"拼团价¥888.88-¥999.99";
NSMutableAttributedString *attr = [self findSubString:priceStr beginStr:@"¥" endStr:@"."];
if (attr) {
	self.priceLabel.attributedText = attr;
}else{
	self.priceLabel.text = priceStr;
}

实现效果:

效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值