2014-10-30 17 views
-1

我期待如下修改字符串型变种“$”:使用方法子改造一个字符串

"one hundred forty-four".sub(/(\w+)(\s)([a-z\-]+)$/){$2 = "test"} 

say.rb:78: Can't set variable $2 

我怎样才能做到这一点?

编辑:one hundredtestforty-four是我想要的。

+0

这就是你想要的:'“一百四十四”.sub(/ [a-z - ] + $ /,“test”)=>“一百个测试”?举例时,请始终显示您所需的输出。 – 2014-10-30 18:43:12

+0

对不起,我的帖子不是很明确 – 2014-10-30 19:17:42

+0

''''百分之四十四''是我想要的。 – 2014-10-30 19:18:41

回答

0

我相信你想:

"one hundred forty-four".sub(/\s+([a-z-]+)$/, 'test\1') 
    #=> "one hundredtestforty-four" 

"one hundred forty-four".sub(/\s+([a-z-]+)$/, "test\\1") 
    #=> "one hundredtestforty-four" 

"one hundred forty-four".sub(/\s+([a-z-]+)$/, "test"+$1) 
    #=> "one hundredtestforty-four" 

"one hundred forty-four".sub(/\s+([a-z-]+)$/, "test#{$1}") 
    #=> "one hundredtestforty-four" 

正则表达式查找以一个或多个空格开头的字符串,然后是任意数量的小写字母或超格,然后是行尾。 (请注意,hypen不会在字符类中转义,并且它必须在类中第一个或最后一个出现)。因此它匹配" forty-four",捕获组1包含"forty-four"。 Ergo," forty-four"被替换为"testforty-four"。请注意,如果字符串是用单引号编写的,则通过编写\1来检索捕获组1的内容,如果使用双引号,则使用\\1。或者,您可以通过以下两种方式之一使用全局变量。

请注意,如果需要,您可以使用$1在随后的语句中引用捕获组1的内容。

+0

什么代表'''\ 1'''的比赛?为1美元? – 2014-10-30 19:39:34

+0

我编辑了解决您的(相关)问题。 – 2014-10-30 19:50:12

+0

非常感谢。 :) – 2014-10-30 19:51:32

2

这是不允许的。它是一个只读的全局变量。

使用另一个全局变量名称,它工作正常。

当然,使用全局变量会引起您对程序其他部分的破坏。

相关问题