PPLable 过滤标点方法


- (void)highlightWordContainingCharacterAtIndex:(CFIndex)charIndex {
    
    if (charIndex==NSNotFound) {
        
        //user did not click on any word
        [self removeHighlight];
        return;
    }
    
    NSString* string = self.label.text;
#pragma mark - 检测单词两侧的空格
    //compute the positions of space characters next to the charIndex
    NSRange end = [string rangeOfString:@" " options:0 range:NSMakeRange(charIndex, string.length - charIndex)];
    NSRange front = [string rangeOfString:@" " options:NSBackwardsSearch range:NSMakeRange(0, charIndex)];
    
    if (front.location == NSNotFound) {
        front.location = 0; //first word was selected
    }
    
    if (end.location == NSNotFound) {
        end.location = string.length-1; //last word was selected
    }
    
    NSRange wordRange = NSMakeRange(front.location, end.location-front.location);
    
    if (front.location!=0) { //fix trimming
        wordRange.location += 1;
        wordRange.length -= 1;
    }
/****************************/
    //获得单词
    NSString *word = [string substringWithRange:wordRange];
    NSLog(@"word %@",word);
    
    NSString *last = [word substringFromIndex:word.length - 1];
    NSString *first= [word substringToIndex:1];
    NSLog(@"last %@",last);
    //过滤标点符号
    if ([last isEqualToString:@","]
        || [last isEqualToString:@"."]
        || [last isEqualToString:@"?"]
        || [last isEqualToString:@";"]
        || [last isEqualToString:@"'"]
        || [last isEqualToString:@"\""]){
        word = [word substringToIndex:word.length - 1];
    }
    if ([first isEqualToString:@","]
        || [first isEqualToString:@"."]
        || [first isEqualToString:@"?"]
        || [first isEqualToString:@";"]
        || [first isEqualToString:@"'"]
        || [first isEqualToString:@"\""]){
        word = [word substringFromIndex:1];
    }
    word = [word lowercaseString];
    
    NSLog(@"word %@",word);
/****************************/
    if (wordRange.location == self.highlightedRange.location) {
        return; //this word is already highlighted
    }
    else {
        [self removeHighlight]; //remove highlight on previously selected word
    }
    
    self.highlightedRange = wordRange;
    
    //highlight selected word
    NSMutableAttributedString* attributedString = [self.label.attributedText mutableCopy];
    [attributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor redColor] range:wordRange];
    self.label.attributedText = attributedString;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值