我遇到了一个Ruby字符串替换问题.我正在编写一个我正在使用的有限语言的预处理器,它本身不支持数组,因此我正在自己攻击.
我有一条线:
x[0] = x[1] & x[1] = x[2]
Run Code Online (Sandbox Code Playgroud)
我想用重新格式化的版本替换每个实例:
x__0 = x__1 & x__1 = x__2
Run Code Online (Sandbox Code Playgroud)
该行可能包括其他地方的方括号.
我有一个匹配数组使用的正则表达式:
array_usage = /(\w+)\[(\d+)\]/
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚Ruby构造逐个替换每个实例.我无法使用,.gsub()因为它将匹配该行上的每个实例,并将每个数组声明替换为第一个数组声明..scan()如果您尝试使用.sub()!块内部扫描,则会抱怨正在修改字符串.
任何想法,将不胜感激!
Mar*_*ers 19
实际上你可以使用gsub,你只需要小心使用它:
s = 'x[0] = x[1] & x[1] = x[2]'
s.gsub!(/(\w+)\[(\d+)\]/, '\1__\2')
puts s
Run Code Online (Sandbox Code Playgroud)
结果:
x__0 = x__1 & x__1 = x__2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18420 次 |
| 最近记录: |