ios - 根据正则去掉小数点后多余的0,但是不起作用,望指导
巴扎黑
巴扎黑 2017-04-17 15:07:24
[iOS讨论组]
- (void)display{
    /**
     *  方法1(正则表达式)
     */
    NSString *regexZero = @"[0]$";
    NSString *regexDot = @"[.]$";
    NSPredicate *predZero = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexZero];
    NSPredicate *predDot = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexDot];
    while ([predZero evaluateWithObject:_numTemp] || [predDot evaluateWithObject:_numTemp]) {
        _numTemp = [_numTemp substringToIndex:_numTemp.length - 1];
    }

    /**
     *  方法2
     */
//    while ([[_numTemp substringFromIndex:_numTemp.length - 1] isEqualToString:@"0"] || [[_numTemp substringFromIndex:_numTemp.length - 1] isEqualToString:@"."]) {
//        _numTemp = [_numTemp substringToIndex:_numTemp.length - 1];
//    }


    [self.numDisplay setText:[NSString stringWithFormat:@"%@",_numTemp]];
}
巴扎黑
巴扎黑

全部回复(2)
ringa_lee

你的这个写法,运算起来相对会低效一些,我提供两个方法你可以参考一下,像这样的情况,最好是封装成Category

这个你可以这样:

    NSString * testNumber = @"3.1400000";
    NSString * s = nil;
    int offset = testNumber.length - 1;
    while (offset)
    {
        s = [testNumber substringWithRange:NSMakeRange(offset, 1)];
        if ([s isEqualToString:@"0"] || [s isEqualToString:@"."])
        {
            offset--;
        }
        else
        {
            break;
        }
    }
    NSString * outNumber = [testNumber substringToIndex:offset+1];
    NSLog(@"%@", outNumber);

还可以这样,先将字符串转成doublefloat再格式化输出。

    NSString * testNumber = @"3.14000000";
    NSString * outNumber = [NSString stringWithFormat:@"%@",@(testNumber.floatValue)];
    NSLog(@"%@", outNumber);

如果是限定一些格式的显示,最好是在服务器端处理好。

怪我咯

你的第一种方法有bug 100.0 输出1

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号