rangeOfCharacterFromSet:带有数字集
rangeOfCharacterFromSet: with numeric set
嗨!
我得到一个 NSString,看起来像这样:“$1.00”。始终是具有价值的货币符号。
我格式化这个字符串以删除带有 str = [str stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
的符号和任何非十进制字符。这给我留下了“1.00”。
现在我正在检查 [str rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location == NSNotFound
中是否有任何非十进制字符。因为我在此之前删除了所有这些应该 return 是。但是我对指向小数点分隔符的位置不满意。
有人知道这里出了什么问题吗?也许这是一个愚蠢的错误,但我找不到它...
附加信息
我刚发现一个类似的问题:我得到一个字符串“$20,000.00”并使用执行此代码:
NSCharacterSet *nonNumbersSet = [[NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@"0123456789."]] invertedSet];
NSString* numberString = [_value stringByTrimmingCharactersInSet:nonNumbersSet];
结果为“20,000.00”。一般来说,这些方法似乎对这些字符有问题。如果有人对此有解决方案,请告诉我。
这可能有帮助:
NSMutableCharacterSet *digitsAndDots = [NSMutableCharacterSet decimalDigitCharacterSet];
[digitsAndDots addCharactersInString:@"."];
NSCharacterSet *notDigitsNorDots = [digitsAndDots invertedSet];
好的,我刚刚找到了解决方案。我只是对 stringByTrimmingCharactersInSet: 有错误的理解。它不会删除所有字符,只会删除两端的字符。
嗨!
我得到一个 NSString,看起来像这样:“$1.00”。始终是具有价值的货币符号。
我格式化这个字符串以删除带有 str = [str stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
的符号和任何非十进制字符。这给我留下了“1.00”。
现在我正在检查 [str rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location == NSNotFound
中是否有任何非十进制字符。因为我在此之前删除了所有这些应该 return 是。但是我对指向小数点分隔符的位置不满意。
有人知道这里出了什么问题吗?也许这是一个愚蠢的错误,但我找不到它...
附加信息
我刚发现一个类似的问题:我得到一个字符串“$20,000.00”并使用执行此代码:
NSCharacterSet *nonNumbersSet = [[NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@"0123456789."]] invertedSet];
NSString* numberString = [_value stringByTrimmingCharactersInSet:nonNumbersSet];
结果为“20,000.00”。一般来说,这些方法似乎对这些字符有问题。如果有人对此有解决方案,请告诉我。
这可能有帮助:
NSMutableCharacterSet *digitsAndDots = [NSMutableCharacterSet decimalDigitCharacterSet];
[digitsAndDots addCharactersInString:@"."];
NSCharacterSet *notDigitsNorDots = [digitsAndDots invertedSet];
好的,我刚刚找到了解决方案。我只是对 stringByTrimmingCharactersInSet: 有错误的理解。它不会删除所有字符,只会删除两端的字符。