寻找一个Ruby方法来操作一个字符串数组,并根据作为参数给出的正则表达式对齐它们。 Emacs有一个名为align-regexp的defun,它在缓冲区域上运行时以交互方式执行此操作。
以下是align-regexp的emacs doc字符串的一部分。
例如,假设您有一个电话号码列表,并希望如此 对齐它们,以便开头的括号排成一行:
Fred (123) 456-7890
Alice (123) 456-7890
Mary-Anne (123) 456-7890
Joe (123) 456-7890
没有预定义的规则来处理这个问题,但您可以轻松地执行此操作 使用REGEXP,如“(”。所有你需要做的就是标记 region,调用`align-regexp'并输入该正则表达式。 结果如下:
Fred (123) 456-7890
Alice (123) 456-7890
Mary-Anne (123) 456-7890
Joe (123) 456-7890
答案 0 :(得分:1)
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