我正在使用:
cleanedDataCellR2C2 = [cleanedDataCellR2C2 stringByReplacingOccurrencesOfString:@"," withString:@""];
和一大堆类似的语句,用于从文本字段中删除所有键盘字符,数字除外.... -(减号),+(加号),以及 0,1,2,3 ,4,5,6,7,8 和 9 数字在文本字段中。上面的示例只是将 NSString
中的逗号转换为空值。
不想承认这一点,但在一个项目中,我实际上使用了大约 80 个语句——除了上面显示的那些之外,每个键盘字符都有一个。你必须有一些更简单的方法。对于这份工作,您有什么建议?
最佳答案
最好的解决办法是,如果可以的话,一开始就不要让他们输入非数字数据。您使用的是 UITextField
吗?如果不是,请忽略其余部分,但如果是:
首先,让你的 View Controller 是一个 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
或类似的东西。
关于ios - 对于此任务,是否有比 stringByReplacingOccurrencesOfString 更好的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733095/