我期待如下修改字符串型变种“$”:使用方法子改造一个字符串
"one hundred forty-four".sub(/(\w+)(\s)([a-z\-]+)$/){$2 = "test"}
say.rb:78: Can't set variable $2
我怎样才能做到这一点?
编辑:one hundredtestforty-four
是我想要的。
我期待如下修改字符串型变种“$”:使用方法子改造一个字符串
"one hundred forty-four".sub(/(\w+)(\s)([a-z\-]+)$/){$2 = "test"}
say.rb:78: Can't set variable $2
我怎样才能做到这一点?
编辑: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"
或
"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的内容。
什么代表'''\ 1'''的比赛?为1美元? – 2014-10-30 19:39:34
我编辑了解决您的(相关)问题。 – 2014-10-30 19:50:12
非常感谢。 :) – 2014-10-30 19:51:32
这是不允许的。它是一个只读的全局变量。
使用另一个全局变量名称,它工作正常。
当然,使用全局变量会引起您对程序其他部分的破坏。
这就是你想要的:'“一百四十四”.sub(/ [a-z - ] + $ /,“test”)=>“一百个测试”?举例时,请始终显示您所需的输出。 – 2014-10-30 18:43:12
对不起,我的帖子不是很明确 – 2014-10-30 19:17:42
''''百分之四十四''是我想要的。 – 2014-10-30 19:18:41