【问题标题】:Looking for an easy way to align text寻找一种简单的方法来对齐文本
【发布时间】:2012-01-10 18:03:13
【问题描述】:

我有一个常见问题,我正在寻找解决方案。 我有几行类似的文本我想以某种方式自动插入文本以垂直对齐它们 这样:

x="foo" data="123" y=x
x="b  4" data="12 " y=x
x="baaar4" data="123aaa5" y=x
x="baaaa,4" data="123dddd5" y=x

变成这样

x="foo"     data="123"      y=x
x="b  4"    data="123 "     y=x
x="baaar4"  data="123aaa5"  y=x
x="baaaa,4" data="123dddd5" y=x

这是一个文本问题。输入来自记事本。输出将进入记事本。这不是格式问题。

【问题讨论】:

  • 怎么样?我所拥有的是记事本中的文本。我可以将数据放入数据库——我想。但是“列”的数量每次都会有所不同。我想要的是将这个文本粘贴到一个黑盒子中,点击一个按钮,然后得到输出。我认为 emacs 有这样的东西。
  • 听起来您的标签不正确,您将问题标记为 html 但拒绝与 html 相关的建议。
  • 我们称之为 HTML 开发
  • 找到答案,但没有足够的“分数”来回答它。 -- 有一个名为“Notepad++”的程序的插件,叫做“代码对齐”。这很好地完成了任务。
  • 你是怎么做到的?

标签: notepad++


【解决方案1】:

Notepad++ 有一个插件可以为你做这件事。它被称为“Code alignment”。它允许您根据您选择的字符垂直对齐文本。您可以通过记事本插件管理器安装它。

下面是一个简单的使用场景。您从以下代码开始,然后通过“equals”对齐,这是插件的内置快捷方式/命令。

之后,您会得到以下结果:

您还可以更进一步,使用“align by...”命令,该命令允许您指定任意对齐字符串。在下面的示例中,我选择了“#”字符以使我的 cmets 彼此相邻。这很容易成为一个更长的字符串,而不是长度为 1 的字符串。

最终结果如下:

【讨论】:

  • 这比不与额外空格对齐的 TextFX 效果好得多。 “代码对齐”非常棒,正是我需要基于 STRINGS 缩进一些 Java 代码!不仅仅是一个角色。 A++++ 给编写插件的人。
  • 第一次没用,但是用'space'对齐3次后,看起来还不错,谢谢
  • 不幸的是,当我尝试align by comma时,这个插件对我不起作用
  • 对我不起作用 - 尝试使用管道字符对齐 ascii 表只会对齐行组,而不是所有行。
  • @StevenM.Vascellaro - 这看起来与我一致。如果有超过一对,此插件将不会检测对齐字符的多个条目并拆分为换行符。
【解决方案2】:

如果您想按特定字符对齐,请使用 Notepad++ 扩展 TextFX。

看:TextFX > TextFX Edit > 用 (,) 排列多行

还有:用(=)排列多行,用(剪贴板字符)排列多行

这里是有用的编程技巧的链接。

http://techbrij.com/518/10-notepad-tips-tricks-fast-development

【讨论】:

  • 每次我尝试代码对齐插件时,它都会冻结记事本++,然后在恢复时不会做任何事情。 TextFX 可以完美运行。
  • 这也对我有用,将 TSQL 结果集复制到记事本++(制表符分隔)中。我能够排列大约 400 行乘 50 列。但是,TextFX 不会将制表符识别为剪贴板字符,它甚至不会接受“\t”,但幸运的是,我能够用逗号替换制表符,按列排列,然后再次将逗号改回(幸运的是,我的 sql 输出中没有制表符或逗号!)
  • TextFX 是一个很好的插件,但按= 对齐会导致= 和前面的字符之间没有前导空格。
  • 这正是我正在寻找的,但有两个问题。首先,它不支持双字节字符内容,如汉字或日文字符。其次,用于排列行的character 不支持非常常见的分隔符:Tab (\t)。任何替代方案或解决方法?
  • 谢谢。 TextFX 帮助我对齐以逗号分隔的数据行。代码对齐包不起作用。
【解决方案3】:

ElasticTabstops 实际上正是我在使用标签时正在寻找的工作。 对齐而不添加字符(空格或制表符)。

【讨论】:

    【解决方案4】:

    Notepad++ TextFX 不再受支持和维护。代码对齐插件只对齐第一次出现的列对齐字符。

    我使用免费的在线服务解决了这个问题: https://onlinetexttools.com/convert-text-to-nice-columns

    【讨论】:

      【解决方案5】:

      我创建了一个 Python 脚本,可以与 Notepad++ 中的 Python 脚本插件一起使用:nppPyAlignColumn

      【讨论】:

      • 嗨,杜尊。你的剧本看起来很棒。但是,我在安装它时遇到了麻烦。全部搞定后,菜单“脚本”什么都没有,可能是最新版notepad++不兼容??
      • 如果 NPP 的文件夹中没有 doLocalConf.xml 文件,请将 AlignColumns.py 复制到 `%APPDATA%\Notepad++\plugins\Config\PythonScript\scripts`。
      【解决方案6】:

      您没有列出编程语言,所以这里有一些执行请求操作的 C#:

      int[] maxLengths = new int[100];
      string[][] splitLines = new string[input.Length][];
      for (int i = 0; i < input.Length; i++)
      {
          splitLines[i] = input[i].Split(' ');
          for (int j = 0; j < splitLines[i].Length; j++)
          {
              maxLengths[j] = Math.Max(maxLengths[j], splitLines[i][j].Length);
          }
      }
      for (int i = 0; i < splitLines.Length; i++)
      {
          for (int j = 0; j < splitLines[i].Length; j++)
          {
              Console.Write(string.Format("0,-" + (maxLengths[j] + 1) + ":G}", splitLines[i][j]));
          }
          Console.WriteLine();
      }
      

      请注意,100 必须大于或等于每行的段数。如果您愿意,您可以通过一些工作来修复该数字。

      基本上这个算法根据空格分割每一行,然后为每个部分计算最大值到一个公共数组中。最后,它遍历所有这些分段并使用空格将它们左对齐打印到最大尺寸(加 1 以获得项目之间的空间)。

      【讨论】:

      • 这太过分了。文本在记事本++(输入)中,OP想要记事本++(输出)中的格式化文本
      • @anphu:这个问题不包括记事本++。记事本完全没有提供这样的功能,因此当然需要使用不同的程序。我碰巧写到控制台,但你可以等效地写到你读取的文件并获得相同的效果。
      • 问题标记在 Notepad++ 下
      • @anphu:它被 j08691 错误地标记为 notepad++,请随意查看原始提问者提到他们了解“一个名为 notepad++ 的程序”的评论。答案是记事本++并被接受,因此标签被追溯更改。这是一个有 4 年历史的问题,所以我不打算修复标签,但我的答案并没有失效,因为该问题已被标记为符合接受的答案。
      【解决方案7】:

      弹性制表符插件在行和列中对齐混乱的文本

      在记事本++中安装

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-29
        • 2014-06-01
        • 1970-01-01
        • 2011-10-23
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多