【问题标题】:Is there something better than stringByReplacingOccurrencesOfString for this task?对于此任务,是否有比 stringByReplacingOccurrencesOfString 更好的方法?
【发布时间】:2012-07-28 19:19:52
【问题描述】:

我正在使用:

cleanedDataCellR2C2 =  [cleanedDataCellR2C2 stringByReplacingOccurrencesOfString:@"," withString:@""];

和一大堆类似的语句从文本字段中删除所有键盘字符,除了数字.... -(减号)、+(加号)以及 0、1、2、3 ,4,5,6,7,8 和 9 个数字在文本字段中。上面的示例只是将NSString 中的逗号转换为空值。

不愿承认这一点,但在一个项目中,我实际上使用了大约 80 条语句——除了上面显示的以外,每个键盘字符都有一条语句。你必须是一些更简单的方法。你对这份工作有什么建议?

【问题讨论】:

    标签: ios


    【解决方案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 = UIKeyboardTypeNumbersAndPunctuationUIKeyboardTypeDecimalPad 或类似的东西。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 2013-01-20
      相关资源
      最近更新 更多