Ruby on rails Ruby gsub不替换换行符
我有这个密码Ruby on rails Ruby gsub不替换换行符,ruby-on-rails,ruby,ruby-on-rails-3,replace,gsub,Ruby On Rails,Ruby,Ruby On Rails 3,Replace,Gsub,我有这个密码 str = @universal_claim_form.errors.full_messages.join str.gsub('Patient Contact Information: Value', 'Patient phone number') if str =~ /Patient Contact Information/ debugger str.gsub("\\n", "<br/>") debugg
str = @universal_claim_form.errors.full_messages.join
str.gsub('Patient Contact Information: Value', 'Patient phone number') if str =~ /Patient Contact Information/
debugger
str.gsub("\\n", "<br/>")
debugger
flash.now[:error] = "Form has errors and was unable to be submitted.<br/> " << str
您可以调用以改变正在调用它的字符串,而不是返回新字符串
gsub在irb中工作的原因是它正在输出结果——irb不做任何超出输入范围的赋值或变异,例如
irb(main):001:0> foo = 4
=> 4
irb(main):002:0> foo + 6
=> 10
foo被赋值为4,因此它输出该赋值的结果,同样,对于foo+6,它输出结果,但foo的值不变
当您调用gsub时,它返回一个带替换的新字符串,这就是为什么您觉得它在irb中工作的原因,这和上面打印的4没有什么不同 您可以调用以改变正在调用它的字符串,而不是返回新字符串
gsub在irb中工作的原因是它正在输出结果——irb不做任何超出输入范围的赋值或变异,例如
irb(main):001:0> foo = 4
=> 4
irb(main):002:0> foo + 6
=> 10
foo被赋值为4,因此它输出该赋值的结果,同样,对于foo+6,它输出结果,但foo的值不变
当您调用gsub时,它返回一个带替换的新字符串,这就是为什么您觉得它在irb中工作的原因,这和上面打印的4没有什么不同 gsub是非变异的,这意味着它将只返回一个str的副本,其中包含子字符。如果您在irb中再次调用s,您将看到这一点。新行将再次返回。你可以使用变异版本gsub!它应该会起作用。还有gsub,我发现特殊字符在正则表达式中可读性更强,例如str.gsub/\n/,。最后请注意gsub!如果没有替换,将返回nil,str将保持不变。gsub是非变异的,这意味着它将只返回str的一个副本,其中包含子字符。如果在irb中再次调用s,则会看到这一点。新行将再次返回。你可以使用变异版本gsub!它应该会起作用。还有gsub,我发现特殊字符在正则表达式中可读性更强,例如str.gsub/\n/,。最后请注意gsub!如果没有替换,则返回nil,str将保持不变。