【问题标题】:Removing the front character from NSMutableString从 NSMutableString 中删除前面的字符
【发布时间】:2014-06-30 16:58:27
【问题描述】:

我正在尝试删除 NSMutableString 的前面字符并尝试过:

    [str setString: [str substringFromIndex:1]] ,
    [str deleteCharactersInRange:NSMakeRange(0,1)] 

还有其他一些。这两个要么删除每个字符,要么删除除我要删除的字符之外的每个字符,例如,如果我有字符串 "-2357" 并尝试删除 "-" 那么当我应该得到“2357”时,我得到的只是“-”。

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

【问题讨论】:

  • 显示您认为行为不端的实际代码以及输入和输出的日志记录。
  • 这两行 do 删除字符串中的第一个字符,那么你真正的代码或问题是什么?

标签: objective-c nsmutablestring


【解决方案1】:

代替:

[str substringToIndex:1]

这样做:

[str substringFromIndex:1]

【讨论】:

  • 对不起,我打错了,我在帖子中修复了它
  • 应该是substringFromIndex(“string”中的小写字母“s”)
【解决方案2】:

如果您想使用deleteCharactersInRange 方法,请执行此操作

NSRange range = {0,1};
[str deleteCharactersInRange:range];

或者,您可以像这样使用substringFromIndex

str = [str substringFromIndex:1];


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

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


编辑

使用deleteCharactersInRange 可能会对某些类型的字符造成问题。有关详细信息,请参阅此问题 here

相反,您可以安全地使用

[str deleteCharactersInRange:[str rangeOfComposedCharacterSequenceAtIndex:0]]

【讨论】:

  • 我已经尝试过了,它会从我的字符串中删除所有字符,我留下一个空字符串。
  • @user3631142,记录前后的字符串。我敢打赌这不是你想的那样。
  • @aksh1t,仅仅假设它们是独立的和独立的就删除字符是很危险的。我推荐[str deleteCharactersInRange:[str rangeOfComposedCharacterSequenceAtIndex:0]]
  • @user3631142 我不同意你的观点。这两种方法都运行良好。您应该尝试像 KenThomases 建议的那样在前后记录字符串。
  • @Ken Thomases:感谢您的指点。我开悟了。 :) 我将编辑我的答案以更新此内容。
【解决方案3】:

如果你想删除字符串的第一个字符,你可以使用这个:-

string = [string substringFromIndex:1];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多