简体   繁体   English

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

[英]How to find Letters,Special Characters in NSString iphone?

I'm trouble with check the Characters(az,AZ) and special characters except(.) in NSString. 我在检查NSString中的Characters(az,AZ)和特殊字符除外(。)时遇到麻烦。 I have a UITextField for Price, i need to pass the value for Price only Numbers with "."[Ex: Price :- 20.00]. 我有一个价格的UITextField,我需要通过“。” [Ex:Price:-20.00]传递“仅价格数字”的值。 I need to check whether any letters,special characters are in NSString, If the Characters,special characters are in NSString (UITextField text), i need to alert the user to enter valid numbers for the Field "Price.". 我需要检查是否有任何字母,特殊字符在NSString中,如果这些字符,特殊字符在NSString中(UITextField文本),则需要提醒用户为“价格”字段输入有效的数字。 Please help to solve this problem. 请帮助解决此问题。 Any suggestion/idea would be great. 任何建议/想法都会很棒。 Thanks in advance. 提前致谢。

You can use NSCharacterSet to find characters in strings: 您可以使用NSCharacterSet查找字符串中的字符:

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

You can do like this, 你可以这样

- (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);


}

Here's one way: 这是一种方法:

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

You can try to use NSScanner class with it's scanFloat method. 您可以尝试将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
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM