寻找一个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