iOS 字符串千位划分

/**
 *  格式化字符串3位一组(按位数取舍,没有入位)
 *
 *  @param numberObject 需要处理的字符串(可以是nsnumber)
 *  @param bits         保留的位数
 *
 *  @return 返回字符串
 */
+ (NSString *)numberDivision:(id)numberObject bits:(NSInteger)bits ;
/**
 *  格式化字符串3位一组(按位数取舍,没有入位)
 *
 *  @param numberObject 需要处理的字符串(可以是nsnumber)
 *  @param bits         保留的位数
 *  @param isInteger   是否自动保留整数(如 : yes 则 1.00 为 1)
 *  @return 返回字符串
 */
+ (NSString *)numberDivision:(id)numberObject bits:(NSInteger)bits isInteger:(BOOL)isInteger;

+ (NSString *)numberDivision:(id)numberObject bits:(NSInteger)bits {
    
    NSString * number = [NSString stringWithFormat:@"%@",numberObject];
    if ([NSString isBlankString:number]) {
        NSLog(@"字符串为空,应该注意");
    }
        //    if ([number containsString:@"."]) { 此方法iOS8以上可用
    if ([number rangeOfString:@"."].location != NSNotFound) {
        NSArray *arrNumber = [[NSArray alloc]initWithArray:[number componentsSeparatedByString:@"."]];
        NSMutableString *arrInt = [[NSMutableString alloc]initWithString:[arrNumber firstObject]];
        int index = 0;
        for (int i = 1; i <= arrInt.length; i ++) {
            if (i % 3 == 0 && arrInt.length > (i + index)) {
                [arrInt insertString:@"," atIndex:arrInt.length - (i + index)];
                index ++;
            }
        }
        if(bits != 0) {
        NSString *decimal = arrNumber.lastObject;
        if(decimal.length >= bits) {
            decimal = [decimal substringToIndex:bits];
        }else {
            while (decimal.length < bits) {
                decimal = [decimal stringByAppendingString:@"0"];
            }
        }
        return [NSString stringWithFormat:@"%@.%@",arrInt,decimal];
        }else {
        return [NSString stringWithFormat:@"%@",arrInt];
        }
        
    } else {
        NSMutableString *arrInt = [[NSMutableString alloc]initWithString:number];
        int index = 0;
        for (int i = 1; i <= arrInt.length; i ++) {
            if (i % 3 == 0 && arrInt.length > (i + index)) {
                [arrInt insertString:@"," atIndex:arrInt.length - (i + index)];
                index ++;
            }
        }
        if(bits != 0) {
            NSString *decimal = [NSString stringWithFormat:@"%@",@"0"];
            while (decimal.length < bits) {
                decimal = [decimal stringByAppendingString:@"0"];
            }
            return [NSString stringWithFormat:@"%@.%@",arrInt,decimal];
        }else {
            return [NSString stringWithFormat:@"%@",arrInt];
        }
    }
}

+ (NSString *)numberDivision:(id)numberObject bits:(NSInteger)bits isInteger:(BOOL)isInteger {
    NSString *number = [NSString numberDivision:numberObject bits:bits];
    if ([number rangeOfString:@"."].location != NSNotFound) {
        NSArray *numberArray = [number componentsSeparatedByString:@"."];
        NSString *decimal = numberArray.lastObject;
        if(decimal.length >1) {
            if (decimal.floatValue == 0) {
                return numberArray.firstObject;
            }
            NSString *tempString = nil;
            NSInteger offset = decimal.length - 1;
            while (offset) {
                tempString = [decimal substringWithRange:NSMakeRange(offset, 1)];
                if ([tempString isEqualToString:@"0"] ) {
                    offset --;
                }else {
                    break;
                }
                decimal = [decimal substringToIndex:offset ];
                return [NSString stringWithFormat:@"%@.%@",numberArray.firstObject,decimal];
            }
        }else {
            if ([decimal isEqualToString:@"0"]) {
                return numberArray.firstObject;
            }else {
                return number;
            }
        }
        
    }else {
        return number;
    }
    return number;
}

时间: 2024-11-06 19:52:31

iOS 字符串千位划分的相关文章

对Textbox的值转换为带千位符和小数的Decimal字符串

以下Function可以用于textbox的KeyUp事件: var numberChars = "1234567890"; function isDecimal(item) { var obj = $(item); if (obj.length > 0) { if ($(obj).val() != null && typeof ($(obj).val()) != "undefined") { var str = $(obj).val().to

js中如何将数据获得2位小数以及对数据进行千分位划分

js中toFixed(n) 方法可把 数字四舍五入为指定小数位数n的数字,注意:这个方法只能对数据类型为Number的数据起作用,包括float,int等.例如: 123.12345.toFixed(2); "123.12" 对数据进行千分位划分采用这样的一个语句就行了:.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,').注意:replace()方法只能对字符串类型起作用,而我们队数据进行千分位划分的时候通常是对数值进行划分,因此在

pandas dataframe 如何把带有千位分隔符的字符串转化为浮点数

如何将下图中的浏览量(PV).访客数(UV).IP数这几列中的带有千位分隔符","的字符串类型转换成浮点数类型 示例代码如下: import pandas as pd test = pd.DataFrame({'A': ['1,232.1', '22,332.3', '3,232', '1,111,111']}) print(type(test.loc[0,'A'])) test1 = pd.DataFrame({}).append(test)   test1['A'] = test1

js实现千位分隔符

//正则表达式实现千位分隔符 function format(num){ var reg = /\d{1,3}(?=(\d{3})+$)/g; return (num + '').replace(reg, '$&,'); } console.log(format(13123903243)); //13,123,903,243 解释: 正则表达式 \d{1,3}(?=(\d{3})+$)  表示前面有1~3个数字,后面的至少由一组3个数字结尾. ?=表示正向引用,可以作为匹配的条件,但匹配到的内容

javascript中将整数添加千位符号

如果num是整数的话,将其转换成带千位符号的字符串: Number(num).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' +  ','); 另外,http://www.cnblogs.com/yeminglong/p/5301295.html 给出了小数的转换格式,如下: 1 /** 2 * 3 * @param num 4 * @param precision 5 * @param separator 6 * @returns {*}

iOS 字符串处理笔记

iOS字符串处理笔记,包括如何使用正则表达式解析,NSScanner扫描,设置和使用CoreParse解析器来解析处理自定义符号等内容 搜索 在一个字符串中搜索子字符串 最灵活的方法 - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange locale:(NSLocale *)locale 格式化字符串 3个方法 -initWithFo

添加千位分隔符

给1234567890,这十个数字增加千位分隔符: Shell下的利器很多,一般最简单的两个方法,一个是Shell自带的printf命令,另一个是Perl的正则.一想到要格式化字符串,其实第一个就应该想到printf,几乎所有的编程语言都会自带这个函数,类Unix下同样到处都兼容神器. 一.Shell的printf如下: printf "%'d\n" 1234567890 二.Perl的正则如下: echo '1234567890' | perl -pe 's/(?<=\d)(?

千位分隔符的完整攻略

千位分隔符[1]是很常见的需求,但是输入文本千变万化,如何才能准确添加千分符呢? 纯整数情况 纯整数大概是所有情况里最简单的一种,我们只要正确匹配出千分位就好了. 观察上面的数字,我们可以得出千分位的特征是到字符串终止位有 3n 个数字,不包括起始位.于是可以得到这样的函数: let milliFormat = (num) => { return num && num.toString().replace(/(?=(?!^)(\d{3})+$)/g, ',') } 但是往往现实没有那

js实现千位分隔

最近一个项目中使用到了千位分隔这个功能,在网上也看见一些例子,但是实现起来总觉有些复杂.因此,自己实现了一个千位分隔,留给后来的我们. 先上源码吧. 该方法支持传入的是一个数字字符串,数字.第二个参数为保留小数的位数,默认保留两位小数: function splitThousands(num, fixed) { var reg = /\B(?=(\d{3})+$)/g; num = num.toString().split("."); num[1] = num[1] ? num[1].