我有一个接受数字的文本字段,我试图用“.”替换字符串中的第 8 个字符
if(self.txtQty.text.length >= 8){
NSRange range = NSMakeRange(8,1);
self.txtQty.text = [self.txtQty.text stringByReplacingCharactersInRange:range withString:@"."];
}
-例子-
1234567.90
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFString replaceCharactersInRange:withString:]: Range or index out of bounds” *** 首先抛出调用栈:
我一直收到这个错误。
范围
{8,1}
表示您正在尝试访问第 9 个字符。但是您的 if
检查仅验证字符串是否包含 8 个或更多字符。因此,如果字符串恰好是 8 个字符长,那么您将收到该错误消息。
将您的
if
支票更新为:
if (self.txtQty.text.length > 8) {
或者您的
if
检查可能是正确的,范围应从 {8,1}
更改为 {7,1}
以替换第 8 个字符。
这两个更改中的哪一个取决于您的目标(更改第 8 个或第 9 个字符)。
为了帮助可视化范围,我将尝试一些绘图:
一些字符串,它的索引和范围
{8,1}
:
1 2 3 4 5 6 7 8 9 0 <-- The string
| | | | | | | | | | |
0 1 2 3 4 5 6 7 8 9 1 <-- Its indexes
0
*** <-- Area for {8,1}
在这里你可以看到范围
{8,1}
正在获得第9个字符。