Rails有没有与字符串的`parameterize`相反的功能?

10
我使用了 parameterize 方法,现在想要将其反向操作以取消参数化。请问是否有相应的方法来实现这个目的?

3
不行-因为parametrize方法会移除一些关于原始字符串的信息。 - Marek Lipka
Rails有一个titleize方法,它会将第一个字母大写并去掉破折号。"my-awesome-pizza".titleize => "My Awesome Pizza" - rdaniels
3个回答

16

没有。 parameterize 是一种有损转换,您无法将其转换回来。

这是一个例子。当您进行转换时:

My Awesome Pizza

进入

my-awesome-pizza

你不知道原始字符串是什么。

My Awesome Pizza
MY AWESOME PIZZA

等等。 这是一个简单的例子。 但是,从源代码中可以看到,某些字符被剥离或转换为分隔符(例如逗号),你将无法恢复它们。

如果您只需要近似转换,则只需将破折号转换为空格,修剪多个空格并应用适当的大小写转换即可。


15
在Rails中有一个titleize函数(源代码):
"this-is-my-parameterized-string".titleize
=> "This Is My Parameterized String"
"hello-world foo bar".titleize
=> "Hello World Foo Bar"

如上所述,这不会将字符串恢复为其预参数化形式,但如果这不是问题,这可能会有所帮助!


9
我同意Simone的观点,但你也可以选择。
def deparametrize(str)
  str.split("-").join(" ").humanize
end

:)


2
请查看 tr。如果 str = "stop-the-bad-guy",那么 str.tr("-", " ").humanize 将返回 "Stop the bad-guy"。 - Shadoath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接