【问题标题】:Does Ruby have a method similar to Emacs align-regexp?Ruby 有没有类似于 Emacs align-regexp 的方法?
【发布时间】:2014-10-09 18:49:38
【问题描述】:

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

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

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

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

没有预定义的规则来处理这个问题,但你可以轻松做到 使用像“(”这样的正则表达式。您所要做的就是标记 区域,调用“align-regexp”并输入该正则表达式。 结果如下:

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

【问题讨论】:

  • Ruby 是一种编程语言,而 emacs 是一种编辑器。用 emacs 编写 Ruby?

标签: ruby arrays string emacs


【解决方案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

【讨论】:

  • @sawa,我认为这个解决方案足够通用。您可以使用任何字符串或正则表达式更改(
  • @sawa,问题提到了(
  • @sawa,顾名思义,align-regexp 接受正则表达式。
猜你喜欢
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 2021-10-19
  • 1970-01-01
  • 2012-07-19
相关资源
最近更新 更多