You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Ruby的String#delete方法无法删除字符串中的`-`字符?

Ruby String#delete方法中连字符的使用误区

你对String#delete参数的核心误解在于:参数里的-是字符范围的分隔符,并非单纯的待删除字符,它的位置会改变Ruby对它的解析逻辑。

  • 当你写delete(" -().")时,-夹在空格和(之间,Ruby会将其解析为「ASCII码从空格(32)到((40)的字符范围」。而-本身的ASCII码是45,不在这个范围内,所以目标字符串里的-不会被删除。
  • 当你写delete(" ()-.")时,-位于参数末尾,后面没有其他字符,Ruby会将其识别为普通待删除字符,因此能正常清除目标字符串里的-。

如果要确保-被当作普通字符处理,有两种可靠方式:

  • 将-放在参数的开头或结尾
  • 用反斜杠转义-,比如delete(" \-().")

内容的提问来源于stack exchange,提问作者jbk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:38:07