代码之家  ›  专栏  ›  技术社区  ›  Stefan S.

格式化清单中的长字符串

  •  0
  • Stefan S.  · 技术社区  · 7 年前

    我正在创建一个Eclipse插件来处理 显示MF 项目数量。然而,格式不是我喜欢的。

    考虑下面的代码:

        final String[] bundles = { "org.acme.alpha", "org.acme.beta", "org.acme.gamma", "org.acme.delta", "org.acme.epsilon", "org.acme.zeta", "org.acme.eta", "org.acme.theta", "org.acme.iota", "org.acme.kappa", "org.acme.lambda" };
    
        try (ByteArrayInputStream in = new ByteArrayInputStream("Manifest-Version: 1.0\n\n".getBytes())) {
            Manifest manifest = new Manifest(in);
            manifest.getMainAttributes().putValue("Require-Bundle", Arrays.stream(bundles).collect(Collectors.joining(",")));
            manifest.write(System.out);
        }
    

    然后,相关输出为:

    Require-Bundle: org.acme.alpha,org.acme.beta,org.acme.gamma,org.acme.del
     ta,org.acme.epsilon,org.acme.zeta,org.acme.eta,org.acme.theta,org.acme.
     iota,org.acme.kappa,org.acme.lambda
    

    看起来非常丑陋,尤其是如果你加上 bundle-versions 加入混合。我宁愿每捆一行。

    天真的做法是自己加一个换行符,所以 显示MF 不需要打破每72个字符。于是我又加了一句 Arrays.stream(bundles).collect(Collectors.joining(",\n ")) .结果是:

    Require-Bundle: org.acme.alpha,
     org.acme.beta,
     org.acme.gamma,
     org.acme.
      delta,
     org.acme.epsilon,
     org.acme.zeta,
     org.acme.eta,
     org.acme.theta,
     o
      rg.acme.iota,
     org.acme.kappa,
     org.acme.lambda
    

    这看起来几乎正确,除了。。。每72个字符还有一个额外的换行符,只是不太明显。

    除了作为块之外,有没有其他方法可以格式化清单文件中的长字符串?如果是,我该怎么做?

    0 回复  |  直到 7 年前