美文网首页
银行卡追加字符

银行卡追加字符

作者: ISwiftUI | 来源:发表于2017-01-14 17:40 被阅读9次

    关于银行卡显示和输入的处理

    • 1.显示方式,只保留后四位用明文显示,其它位置用*号替代 (如:**** **** **** **** 1234
    • 2.输入显示方式,没输入四位,添加一个空格(如:1234 5678 8976 5623
    // 指定位数追加字符
    + (NSString *) addSpaceWithStr:(NSString *)str toStr:(NSString *) toStr length:(NSInteger) number {
        if (str.length <= number) {
            return str;
        }
        NSMutableString *subStr = [[NSMutableString alloc]initWithString:str];
        // 如果可以整除,最前面则不添加
        NSInteger index = (str.length / number - 1);
        for (int i = 0; i < index; i++) {
            // 开始追加字符
            [subStr insertString:toStr atIndex:(subStr.length - (i * (number + toStr.length) + number))];
        }
        return subStr;
    }
    
    
    // 只保留后四位数字,其它位用星号替代
    - (NSString *) charcterWithStar:(NSString *) str {
        if (str.length <= 4) {
            return str;
        }
        NSMutableString *mutStr = [NSMutableString new];
        NSString *firstStr = [str substringWithRange:NSMakeRange(0,str.length - 4)];
        NSString *secondStr = [str substringWithRange:NSMakeRange(str.length - 4,4)];
        NSMutableString *starStr = [NSMutableString new];
        for (int i = 0; i <= firstStr.length - 1; i++) {
             [starStr appendString:@"*"];
        }
        firstStr = [firstStr stringByReplacingOccurrencesOfString:[firstStr substringWithRange:NSMakeRange(0,firstStr.length)]withString:starStr];
        [mutStr appendString:firstStr];
        [mutStr appendString:secondStr];
        return mutStr;
    }
    
    // 移除字符串中的所有空格
    - (NSString *) removeStrAllSpace:(NSString *)str {
        str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
        return str;
    }
    
    #pragma mark - UITextFieldDelegate
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        // 四位加一个空格
        if ([string isEqualToString:@""])  { // 删除字符
            if ((textField.text.length - 2) % 5 == 0) {
               textField.text = [textField.text substringToIndex:textField.text.length - 1];
            }
        return YES;
        } else {
            if (textField.text.length % 5 == 0) {
                textField.text = [NSString stringWithFormat:@"%@ ", textField.text];
           }
        }
        return YES;
    }
    

    相关文章

      网友评论

          本文标题:银行卡追加字符

          本文链接:https://www.haomeiwen.com/subject/ifnebttx.html