Objective c 如何计算包含格式化十进制数的字符串的长度

Objective c 如何计算包含格式化十进制数的字符串的长度,objective-c,nsstring,nsformatter,Objective C,Nsstring,Nsformatter,我试图计算一个NSString中的字符数,该字符串是用十进制数字进行本地化格式化的 使用下面的代码,我在英国本地化中获得了正确的长度。但是如果我尝试一种法语区域格式,它会出错,其中千位分隔符是一个空格,小数点是一个逗号 有人能就正确的方法提出建议吗 下面是应该给出字符数的位: -(NSString*)setFormatLength:(double)result; { NSNumber* aNumber = [NSNumber numberWithDouble:result ];

我试图计算一个
NSString
中的字符数,该字符串是用十进制数字进行本地化格式化的

使用下面的代码,我在英国本地化中获得了正确的长度。但是如果我尝试一种法语区域格式,它会出错,其中千位分隔符是一个空格,小数点是一个逗号

有人能就正确的方法提出建议吗

下面是应该给出字符数的位:

-(NSString*)setFormatLength:(double)result;
{
    NSNumber* aNumber = [NSNumber numberWithDouble:result ];
    NSString* lengthcalc =[unformatter stringFromNumber: aNumber] ;
    int lnth = lengthcalc.length;
    NSLog(@" length %d",lnth);

    if(lnth == 15)
    {
      //do something
    }
    else
    {
    // do something else
    }

    return displayresult;
事情是这样的:

unformatter = [[NSNumberFormatter alloc] init];
[unformatter setFormatterBehavior:NSNumberFormatterBehaviorDefault];
[unformatter setLocale:[NSLocale currentLocale]];
[unformatter setNumberStyle: NSNumberFormatterDecimalStyle];
[unformatter setAlwaysShowsDecimalSeparator:NO];

“它搞砸了”是什么意思?
lengthcalc.length
不返回字符串中的字符数吗?为什么15在这里是一个神奇的数字?是的,我想这里对你所说的“长度”的含义有些困惑。也许可以更新你的问题?字符串中的位数?或字符串的实际字符长度?很抱歉造成混淆。我正在尝试确定字符串长度计算中有多少位数字,包括,或之类的符号。表示分组和小数分隔符。其目的是根据字符串中的位数以不同的方式显示输出。我的nsnumber可能是1234579.12345678在这种情况下,长度将大于15位,因此我将使用科学格式对其进行格式化以显示,但如果数字为123.456,则我将以不同的方式显示。我的问题是,从未格式化事件返回的字符串不包含预期的位数。例如,nsnumber是115746.4030778547,但返回的字符串是115746403,因此lnth是10,这不是我所期望的-我希望将17视为lnth