如何在NSString iphone中找到字母,特殊字符?

时间:2011-11-29 10:17:52

标签: iphone numbers uitextfield character

我很难检查NSString中的字符(a-z,A-Z)和除(。)之外的特殊字符。我有一个UITextField for Price,我需要传递“仅价格数字”的值“。”[例如:价格: - 20.00]。我需要检查NSString中是否有任何字母,特殊字符,如果字符,特殊字符在NSString(UITextField文本)中,我需要提醒用户输入字段“Price”的有效数字。请帮忙解决这个问题。任何建议/想法都会很棒。提前谢谢。

4 个答案:

答案 0 :(得分:2)

您可以使用NSCharacterSet在字符串中查找字符:

NSCharacterSet *nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
BOOL containsNonDigitChars = [myString rangeOfCharacterFromSet:nonDigits].location == NSNotFound

答案 1 :(得分:1)

你可以这样做,

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];
//here u can alert the user by checking length
return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0);


}

答案 2 :(得分:1)

这是一种方式:

if ([myString isMatchedByRegex:@"^(?:|0|[1-9]\\d*)(?:\\.\\d*)?$"]) {
    // String is OK
}

答案 3 :(得分:1)

您可以尝试使用NSScanner类及其scanFloat方法。

NSScanner *scanner = [NSScanner scannerWithString: theString];
float scannedValue = 0.0f;

BOOL foundFloat = [scanner scanFloat:&scannedValue];
if (foundFloat && [scanner isAtEnd])
{
  // scan was successful
}
else
{
 // illegal characters were found
}