1. 程式人生 > >iOS 金額欄位加千位分隔符的方法以及銀行卡卡號4位一空格的方法

iOS 金額欄位加千位分隔符的方法以及銀行卡卡號4位一空格的方法

1.金額欄位加千位分隔符方法

- (NSString *)separatedDigitStringWithStr:(NSString *)digitString

{

    if (digitString.length <= 3) {

        return digitString;

    } else {

        NSMutableString *processString = [NSMutableString stringWithString:digitString];

        NSInteger location = processString.length

- 3;

        NSMutableArray *processArray = [NSMutableArray array];

        while (location >= 0) {

            NSString *temp = [processString substringWithRange:NSMakeRange(location, 3)];

            [processArray addObject:temp];

            if (location < 3 && location > 0

)

            {

                NSString *t = [processString substringWithRange:NSMakeRange(0, location)];

                [processArray addObject:t];

            }

            location -= 3;

        }

        NSMutableArray *resultsArray = [NSMutableArray array];

        int k = 0;

        for

(NSString *str in processArray)

        {

            k++;

NSMutableString *tmp = [NSMutableStringstringWithString:str];

            if (str.length > 2 && k < processArray.count )

            {

                [tmp insertString:@"," atIndex:0];

                [resultsArray addObject:tmp];

            } else {

                [resultsArray addObject:tmp];

            }

        }

NSMutableString *resultString = [NSMutableStringstring];

        for (NSInteger i = resultsArray.count - 1 ; i >= 0; i--)

        {

            NSString *tmp = [resultsArray objectAtIndex:i];

            [resultString appendString:tmp];

        }

        return resultString;

    }

}

/********************************************************************************************/

/********************************************************************************************/

2.銀行卡卡號4位一空格方法

//檢測是否為純數字

- (BOOL)isPureInt:(NSString *)string{

    NSScanner* scan = [NSScanner scannerWithString:string];

    int val;

    return [scan scanInt:&val] && [scan isAtEnd];

}

//在UITextField的代理方法中

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

        NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到輸入框的內容

//檢測是否為純數字

        if ([self isPureInt:string]) {

//新增空格,每4位之後,4組之後不加空格,格式為xxxx xxxx xxxx xxxx xxxxxxxxxxxxxx

            if (textField.text.length % 5 == 4 && textField.text.length < 22) {

                textField.text = [NSString stringWithFormat:@"%@ ", textField.text];

            }

            //只要30位數字

            if ([toBeString length] >= 19+4+11)

            {

                toBeString = [toBeString substringToIndex:19+4+11];

                textField.text = toBeString;

                [textField resignFirstResponder];

                return NO;

            }

        }

        else if ([string isEqualToString:@""]) { // 刪除字元

            if ((textField.text.length - 2) % 5 == 4 && textField.text.length < 22) {

                textField.text = [textField.text substringToIndex:textField.text.length - 1];

            }

            return YES;

        }

        else{

            return NO;

        }

        return YES;

}