Ruby中gsub参数数量错误,如何删除空格与+966前缀?
问题原因
你调用gsub时传了3个参数,但Ruby的String#gsub方法仅接受1或2个参数(第一个是匹配模式,第二个是替换内容或块),所以触发了参数数量错误。
正确实现方式
方法1:分步处理(清晰直观)
先删除所有空格,再移除开头的+966前缀:
original_str = '+966 055 654 6509' # 包含空格的示例字符串 clean_str = original_str.gsub(/\s+/, '') # 删除所有空格,得到 '+9660556546509' result = clean_str.sub(/^\+966/, '') # 仅替换开头的+966为空 puts result # 输出:0556546509
方法2:合并为一行代码
把两步操作合并,更简洁:
result = '+966 055 654 6509'.gsub(/\s+/, '').sub(/^\+966/, '') puts result
方法3:通过字符串截取实现
如果确定前缀+966一定存在且长度固定,可以用截取的方式,效率更高:
original_str = '+9660556546509' clean_str = original_str.delete(' ') # 删除空格 result = clean_str.start_with?('+966') ? clean_str[4..-1] : clean_str puts result
这里clean_str[4..-1]表示从第5个字符(索引从0开始,4是第5位)截取到字符串末尾。
内容的提问来源于stack exchange,提问作者Nazi
相关产品推荐
相关产品推荐

