iOS 金额字段加千位分隔符的方法以及银行卡卡号4位一空格的方法

来源:互联网 发布:音频分析软件 编辑:程序博客网 时间:2024/06/04 19:12

1.金额字段加千位分隔符方法


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


{

   if (digitString.length <=3) {

        

       return digitString;

        

    }else {

        

       NSMutableString *processString = [NSMutableStringstringWithString:digitString];

   

       NSInteger location = processString.length -3;

        

       NSMutableArray *processArray = [NSMutableArrayarray];

        

       while (location >= 0) {

            

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

                        

            [processArrayaddObject:temp];

            

           if (location < 3 && location >0)

                

            {

                

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

                

                [processArrayaddObject:t];

                

            }

            

            location -=3;

            

        }

        

       NSMutableArray *resultsArray = [NSMutableArrayarray];

        

       int k = 0;

        

       for (NSString *strin processArray)

            

        {

            

            k++;

            

            NSMutableString *tmp = [NSMutableStringstringWithString:str];

            

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

                

            {

                

                [tmpinsertString:@","atIndex:0];

                

                [resultsArrayaddObject:tmp];

                

            }else {

                

                [resultsArrayaddObject:tmp];

                

            }

            

        }


        NSMutableString *resultString = [NSMutableStringstring];

        

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

            

        {

            

           NSString *tmp = [resultsArray objectAtIndex:i];

            

            [resultStringappendString: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.textstringByReplacingCharactersInRange: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 = [NSStringstringWithFormat:@"%@ ", textField.text];

            }

           //只要30位数字

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

            {

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

                textField.text = toBeString;

                [textFieldresignFirstResponder];

               return NO;

            }

        }

       else if ([stringisEqualToString:@""]) {// 删除字符

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

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

            }

           return YES;

        }

       else{

           return NO;

        }

       return YES;

}



0 0