在ruby中,sub不允许用'\ 0'开头的另一个字符串替换字符串。
'a'.sub('a','\\0b')
返回:
'ab'
文档说\ 0被解释为反向引用,但由于第一个参数不是Regexp,我不明白它为什么会这样。
答案 0 :(得分:2)
如果您希望将第二个参数解释为普通String,则可以将其转义为:
<div class="content">
<div class="title"><a href="#">Section 1</a>
</div>
<div class="text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
<div class="title"><a href="#">Section 2</a>
</div>
<div class="text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
<div class="title"><a href="#">Section 3</a>
</div>
<div class="text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
jQuery(document).ready(function(){
$('.title').click(function(){
$('.text').toggle();
});
});
</script>
或
'a'.sub('a', Regexp.escape('\0b'))
都返回:
'a'.sub('a', '\\\0b')
有关此行为的说明,请参阅documentation
"\\0b"
该模式通常是Regexp;如果作为字符串给出,任何常规 它包含的表达元字符将按字面解释, 例如'\ d'将匹配反斜杠后跟'd',而不是数字。
如果替换是一个字符串,它将替换匹配的字符串 文本。 它可能包含对模式捕获组的反向引用 形式
sub(pattern, replacement) → new_str
,其中d是组号,或"\d"
,其中n是 团队名字。如果它是双引号字符串,则两个反向引用都必须 之前是一个额外的反斜杠。但是,在更换内 特殊匹配变量,例如$&amp;,不会引用当前的 比赛。如果replacement是一个看起来像模式捕获的String 组但实际上不是模式捕获组,例如“\'”,然后呢 必须在前面加上两个反斜杠,如“\”“。