ios - 对于此任务,是否有比 stringByReplacingOccurrencesOfString 更好的东西?

标签 ios

我正在使用:

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 = UIKeyboardTypeNumbersAndPunctuationUIKeyboardTypeDecimalPad 或类似的东西。

关于ios - 对于此任务,是否有比 stringByReplacingOccurrencesOfString 更好的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733095/

相关文章:

ios - 通过 UIActivityView 共享时 NSURL 打印两次

ios - 如何快速制作反向倒计时或正数计时器?

ios - 如何在 iPhone 的联系人列表中只显示电话号码?

iphone - 在相机捕获时收集 GPS 位置和指南针方向?

ios - CMMotionManager vs UIAccelerometer 效率

ios - Collection View 单元格不会改变大小

iOS 8 UITableView 背景色外观

objective-c - MPMoviePlayerController mp4 文件流

iphone - Apple dev程序到期,我可以以后再续吗?

ios - `UITabBarController` 切换标签时去除黑色背景