Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby替换字符串的部分_Ruby_String - Fatal编程技术网

Ruby替换字符串的部分

Ruby替换字符串的部分,ruby,string,Ruby,String,我有这根绳子 s = "03:23 PM on 09/04/12" 我想去掉“on”并将其替换为一个空格“”。我认为字符串的gsub方法以及regex是最好的解决方案。我只是不知道为什么这行不通 s ="03:23 PM on 09/04/12" s.gsub(/ on /, ' ') puts s #=> "03:23 PM on 09/04/12" 对我来说很好。。。也许你想使用gsub >> s ="03:23 PM on 09/04/12" => "03:23

我有这根绳子

s = "03:23 PM on 09/04/12"
我想去掉“on”并将其替换为一个空格“”。我认为字符串的gsub方法以及regex是最好的解决方案。我只是不知道为什么这行不通

s ="03:23 PM on 09/04/12"
s.gsub(/ on /, ' ')
puts s
#=> "03:23 PM on 09/04/12"

对我来说很好。。。也许你想使用
gsub

>> s ="03:23 PM on 09/04/12"
=> "03:23 PM on 09/04/12"
>> s.gsub(/ on /, ' ')
=> "03:23 PM 09/04/12"
>> s.gsub!(/ on /, ' ')
=> "03:23 PM 09/04/12"
>> s
=> "03:23 PM 09/04/12"

在这种情况下,您可以不使用
regex
,但如果要使用
regex
,请使用
s.gsub!(/on/,“”)

您不需要为gsub参数使用Regexp对象(
/on/
),您也可以使用字符串-这对我很有用

s = "03:23 PM on 09/04/12"

p s.gsub " on ", " "
#=> "03:23 PM 09/04/12"

字符串的
gsub
方法返回修改后的字符串,并保留对象字符串。如果您想在适当的位置修改对象,则必须使用
gsub

另外,如果您只想更改一个事件,那么
sub
可能是您的最佳选择

所以


gsub
返回更改的字符串,
gsub
将在适当的位置对字符串进行变异。
sub
,因为它会更改第一次出现的情况,在处理长字符串时可能比
gsub
快得多
sub
将立即退出,
gsub
将扫描剩余字符串以查找要替换的其他目标。@theTinMan:公平地说,优势不大,特别是在20个字符的字符串上。正如我所说的,它会影响长字符串,尤其是在处理其中许多字符串时。
s = "03:23 PM on 09/04/12"

p s.gsub " on ", " "
#=> "03:23 PM 09/04/12"
s = "03:23 PM on 09/04/12"

s = s.sub(' on ', ' ')
s.sub!(' on', ' ')