Ruby有类似Emacs的align-regexp方法吗?



寻找一个Ruby方法来操作字符串数组,并根据作为参数给出的正则表达式对它们进行对齐。Emacs有一个名为align-regexp的defun,当对缓冲区的一个区域进行操作时,它可以交互地完成此操作。

这是align-regexp的emacs文档字符串的一部分。

例如,假设您有一个电话号码列表,并且想要将它们对齐,使左括号对齐:

Fred (123) 456-7890
Alice (123) 456-7890
Mary-Anne (123) 456-7890
Joe (123) 456-7890

没有预定义的规则来处理这个问题,但是您可以很容易地做到这一点使用像"("这样的REGEXP。你所要做的就是标记区域,调用' align-regexp'并键入该正则表达式。结果如下:

Fred      (123) 456-7890
Alice     (123) 456-7890
Mary-Anne (123) 456-7890
Joe       (123) 456-7890
lines = [
  'Fred (123) 456-7890',
  'Alice (123) 456-7890',
  'Mary-Anne (123) 456-7890',
  'Joe (123) 456-7890',
]
rows = lines.map { |line| line.partition('(') }
pos = rows.map { |row| row[0].size }.max
puts rows.map { |row| row[0] = row[0].ljust(pos); row.join }
输出:

Fred      (123) 456-7890
Alice     (123) 456-7890
Mary-Anne (123) 456-7890
Joe       (123) 456-7890

最新更新