NSString相关知识点

2018-05-18  本文已影响10人  iOSCoder

一、NSString获取字符串中的最后一个字符以及操作

获取到最后一个字符

    NSString *lastString = [cityString substringFromIndex:cityString.length-1];

去除最后一个字符

cityString = [cityString substringToIndex:[cityString length]-1];

二、昵称隐藏中间字符串

评论列表中隐藏用户的真实昵称,中间字符以*代表

/**
 评论列表中隐藏用户的真实昵称,中间字符以*代表
 */
- (void)setHiddenNickName {
    
    NSString *string = self.text;
    NSInteger length = [string length];
    if (length <= 2) {
        return;
    }else {
        
        NSString *first = [string substringToIndex:1];//首字符
        NSString *last = [string substringFromIndex:length-1];//尾字符
        
        NSString *secondStr = [string substringToIndex:2];
        NSString *lastSecond = [string substringFromIndex:length-2];//尾字符

        BOOL firstBool = [self isContains4byteChar:secondStr];
        BOOL lastBool = [self isContains4byteChar:lastSecond];
        
        NSString *finiaFirstChar = first;
        NSString *finiaLastChar = last;
        if ((firstBool || lastBool) && (length == 3)) {
            
            return;
        }else if (firstBool && lastBool && (length == 4)) {
            return;
        }else {
            
            if (firstBool) {
                finiaFirstChar = secondStr;
            }
            if (lastBool) {
                finiaLastChar = lastSecond;
            }
        }
        self.text = [NSString stringWithFormat:@"%@**%@",finiaFirstChar,finiaLastChar];
        
    }
}

判断字符串中是否包含表情

/**
 * @brief 校验表情符号
 *
 * @param string 校验字符串
 *
 * @return 是否含有表情符号
 */
- (BOOL)isContains4byteChar:(NSString *)string
{
    __block BOOL is4Byte = NO;
    [string enumerateSubstringsInRange:NSMakeRange(0, [string length])
                               options:NSStringEnumerationByComposedCharacterSequences
                            usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                                if ([substring lengthOfBytesUsingEncoding:NSUTF8StringEncoding] >= 4) {
                                    is4Byte = YES;
                                    *stop = YES;
                                }
                            }];
    return is4Byte;
}
上一篇下一篇

猜你喜欢

热点阅读