rangeOfCharacterFromSet:带数字集

时间:2016-04-06 08:58:49

标签: objective-c nsrange nscharacterset

海!

我有一个看起来像这样的NSString:" $ 1.00"。始终是带有值的货币符号。

我格式化此字符串以删除符号以及str = [str stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]的任何非小数字符。这留下了" 1.00"。

现在我正在检查[str rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location == NSNotFound是否有任何非小数字符。因为我之前删除了所有这些应该返回YES。但是我指向小数分隔符的位置为NO。

有谁知道这里出了什么问题?也许这是一个愚蠢的错误,但我无法找到它......

其他信息

我刚发现了一个类似的问题:我收到了一个字符串" $ 20,000.00"并使用执行此代码:

NSCharacterSet *nonNumbersSet = [[NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@"0123456789."]] invertedSet];

NSString* numberString = [_value stringByTrimmingCharactersInSet:nonNumbersSet];

结果是" 20,000.00"。这些方法似乎一般都存在这些字符的问题。如果有人有解决方案,请告诉我。

2 个答案:

答案 0 :(得分:0)

这可能有所帮助:

NSMutableCharacterSet *digitsAndDots = [NSMutableCharacterSet decimalDigitCharacterSet]; 
[digitsAndDots addCharactersInString:@"."]; 
NSCharacterSet *notDigitsNorDots = [digitsAndDots invertedSet];

答案 1 :(得分:0)

好的,我刚刚找到了解决方案。我对stringByTrimmingCharactersInSet:有一个错误的理解。它不会删除所有字符,只删除两端的字符。