Objective c 从NSMutableString中删除前字符

Objective c 从NSMutableString中删除前字符,objective-c,nsmutablestring,Objective C,Nsmutablestring,我正在尝试删除NSMutableString的前字符,并已尝试: [str setString: [str substringFromIndex:1]] , [str deleteCharactersInRange:NSMakeRange(0,1)] 还有其他一些。这两个字符要么删除所有字符,要么删除除我试图删除的字符之外的所有字符,例如,如果我有字符串“-2357”,并且试图删除“-”,那么当我应该得到“2357”时,我只得到“-” 我做错什么了吗?我该如何解决这个问题?而

我正在尝试删除
NSMutableString
的前字符,并已尝试:

    [str setString: [str substringFromIndex:1]] ,
    [str deleteCharactersInRange:NSMakeRange(0,1)] 
还有其他一些。这两个字符要么删除所有字符,要么删除除我试图删除的字符之外的所有字符,例如,如果我有字符串“-2357”,并且试图删除“-”,那么当我应该得到“2357”时,我只得到“-”

我做错什么了吗?我该如何解决这个问题?

而不是:

[str substringToIndex:1]
这样做:

[str substringFromIndex:1]
而不是:

[str substringToIndex:1]
这样做:

[str substringFromIndex:1]

如果要使用
deleteCharactersRange
方法,请执行此操作

NSRange range = {0,1};
[str deleteCharactersInRange:range];
或者,您可以像这样使用
substringFromIndex

str = [str substringFromIndex:1];

与您所说的相反,
[str deleteCharactersRange:NSMakeRange(0,1)]
应该可以正常工作,我不知道为什么不起作用

[str substringToIndex:1]
将从开头返回字符串到索引1,即
-
。您需要的是
substringfromfromindex
。由于此方法返回一个
NSString
,您需要将其分配给
str
;仅在
str
上调用该方法是不够的


编辑 使用
deleteCharactersRange
可能会对某些类型的字符造成问题。有关更多信息,请参阅此问题

相反,您可以安全地使用

[str deleteCharactersInRange:[str rangeOfComposedCharacterSequenceAtIndex:0]]

如果要使用
deleteCharactersRange
方法,请执行此操作

NSRange range = {0,1};
[str deleteCharactersInRange:range];
或者,您可以像这样使用
substringFromIndex

str = [str substringFromIndex:1];

与您所说的相反,
[str deleteCharactersRange:NSMakeRange(0,1)]
应该可以正常工作,我不知道为什么不起作用

[str substringToIndex:1]
将从开头返回字符串到索引1,即
-
。您需要的是
substringfromfromindex
。由于此方法返回一个
NSString
,您需要将其分配给
str
;仅在
str
上调用该方法是不够的


编辑 使用
deleteCharactersRange
可能会对某些类型的字符造成问题。有关更多信息,请参阅此问题

相反,您可以安全地使用

[str deleteCharactersInRange:[str rangeOfComposedCharacterSequenceAtIndex:0]]

如果要删除字符串的第一个字符,可以使用以下命令:-

string = [string substringFromIndex:1];

如果要删除字符串的第一个字符,可以使用以下命令:-

string = [string substringFromIndex:1];

很抱歉,我在帖子中输入了错误,我已将其修复。它应该是substringFromIndex(字符串中的小写字母“s”)。很抱歉,我在帖子中输入了错误,我已将其修复。它应该是substringFromIndex(字符串中的小写字母“s”)在记录输入和输出的同时显示您认为行为不正常的实际代码。两行都会删除字符串中的第一个字符,那么您真正的代码或问题是什么?在记录输入和输出的同时显示您认为行为不正常的实际代码。两行都会删除字符串中的第一个字符,那么您真正的代码或问题是什么呢?我已经尝试过了,它删除了字符串中的所有字符,剩下的是一个空字符串。@user3631142,记录字符串的前后。我敢打赌这不是你想象的那样。@aksh1t,仅仅假设角色是独立的,是很危险的。我建议
[str deleteCharactersRange:[str rangeOfComposedCharacterSequenceAtIndex:0]
@user3631142在这一点上我不同意你的意见。这两种方法都非常有效。您应该像KenThomases建议的那样,尝试在前后记录字符串。@Ken Thomases:谢谢您的指针。我是开明的。:)我将编辑我的答案以更新此内容。我已尝试过此操作,它将删除字符串中的所有字符,留下一个空字符串。@user3631142,记录字符串前后的内容。我敢打赌这不是你想象的那样。@aksh1t,仅仅假设角色是独立的,是很危险的。我建议
[str deleteCharactersRange:[str rangeOfComposedCharacterSequenceAtIndex:0]
@user3631142在这一点上我不同意你的意见。这两种方法都非常有效。您应该像KenThomases建议的那样,尝试在前后记录字符串。@Ken Thomases:谢谢您的指针。我是开明的。:)我将编辑我的答案以更新此内容。