我正在使用:
cleanedDataCellR2C2 = [cleanedDataCellR2C2 stringByReplacingOccurrencesOfString:@"," withString:@""];
和一大堆类似的声明从文本字段中删除所有键盘字符,除了数字.... - (减号),+(加号),以及0,1,2,3 ,4,5,6,7,8和9个数字在文本字段中。上面的示例只是将NSString
中的逗号转换为空值。
讨厌承认它,但是在一个项目中,我实际上使用了大约80个语句 - 除了上面显示的那些语句之外的每个键盘字符。你必须有一些更简单的方法。你有什么建议做这个工作?
答案 0 :(得分:1)
你可以尝试使用正则表达式,这里有几个例子:
Use regular expression to find/replace substring in NSString
NSRegularExpression: Replace url text with <a> tags
答案 1 :(得分:1)
最好的解决方案是,如果可以的话,首先不要让他们输入非数字数据。你使用的是UITextField
吗?如果没有,请忽略其余部分,但如果是这样的话:
首先,让您的视图控制器为UITextFieldDelegate
,例如:
@interface MyViewController : UIViewController <UITextFieldDelegate>
然后在viewDidLoad
:
self.myTextField.delegate = self;
其次,添加shouldChangeCharacterInRange
只允许所需的字符:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *nonNumeric = [[NSCharacterSet characterSetWithCharactersInString:@"+-0123456789"] invertedSet];
if ([string rangeOfCharacterFromSet:nonNumeric].location == NSNotFound)
return TRUE;
else
return FALSE;
}
第三,您可能希望将文本字段的键盘更改为仅用于数字数据,例如self.myTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation
或UIKeyboardTypeDecimalPad
或类似内容。