如何在指定NSRange时从NSString中删除字符?

时间:2013-06-06 14:11:32

标签: objective-c nsstring uitextfielddelegate

我需要在指定NSString时删除NSRange中的字符。我有一个文本字段,我输入一些带有数字格式的文本,我得到的值为$1,234,567.00

现在我将光标放在数字5之后,并想要删除数字5.在文本委托方法shouldChangeCharactersInRange中,当我按退格键时,我将范围设为(7,1)。我尝试了以下

modifiedFieldText = [modifiedFieldText stringByReplacingCharactersInRange:NSMakeRange(range.location - 1, range.length) withString:string];

但我无法删除正确的字符。对此提出任何建议都会有很大帮助。请纠正我错误的地方。

1 个答案:

答案 0 :(得分:2)

我怀疑在到达此行之前,您必须拥有一些修改modifiedFieldText的代码。您应确保将range应用于原始textField内容,方法是让stringByReplacingCharactersInRange直接使用textfield,例如:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *modifiedFieldText = [textField.text stringByReplacingCharactersInRange:range withString:string];

    // now do whatever else you want
}

使用该代码,如果文本字段包含$1,234,567.00且用户已删除5,则范围将为{7, 1},结果modifiedFieldText将为{{} 1}},您可以根据需要继续进行重新格式化以调整标点符号。

如果您仍然遇到问题,请使用$1,234,67.00更完整的版本更新您的问题。