【问题标题】:Java equivalent of visual basic tab functionJava 等效于 Visual Basic 选项卡功能
【发布时间】:2014-11-20 17:57:46
【问题描述】:

我正在尝试为我的公司将一些旧的 VB6 代码转换为 java。除了字符串的格式之外,我已经完成了所有工作。在旧的 VB6 代码中,他们将使用 Tab(N) 函数来指示在将字符串写入文本文件时将字符串放置在行上的位置。我一直在寻找某种方法来用 Java 以任何方式复制它。我现在正在尝试找出 String.format 方法,但我对它的功能有些困惑。有没有其他函数或任何方法可以在java中设置字符串的绝对位置?一个例子是第一个字符串的长度为 15 个字符,该行中的下一个字符串需要位于第 50 行位置,而另一个字符串长度为 4 个字符,之后的每个字符串应该位于位置 19、34、41、51 , 59, 66, 76, 83, 和 90。任何帮助将不胜感激!

例子:

(name)                                           PRODUCTION DATE    : (date)

SERVICE           PROC  MODS       BILLED       ALLOWED      PAID          ADJ    ADJ    LINE REMARK
DATE              CODE           UNI    AMT       AMT     UNI    AMT       AMT    CODES  CODE

【问题讨论】:

  • String.format 或许多 printf 方法之一是完成这项工作的最佳工具。有很多很多的 printf 教程页面;我建议搜索它们。
  • 谢谢,我以前从未使用过任何 printf 方法。我会检查他们的

标签: java string vb6 formatting string-formatting


【解决方案1】:

我遇到了类似的问题并最终为此创建了一个构建器。

public class TabLineBuilder {

    int length;
    private String line;
    StringBuilder sb;

    public TabLineBuilder(int length) {
        this.length = length;
        initialize(); // call non-overridable method
    }

    public TabLineBuilder insert(int pos, String text) {
        sb.replace(pos, pos + text.length(), text);
        line = sb.toString();
        return this;
    }

    public String toString() {
        return line;
    }

    private void initialize() {
        // new line of spaces
        line = String.format("%" + length + "s", ' ');
        sb = new StringBuilder(line);
    }

    public void clear() {
        // Overridable public method
        initialize();
    }
}

例子:

TabLineBuilder tlb = new TabLineBuilder(120);
String line = tlb.insert(0, "(name)").insert(50, "PRODUCTION DATE").toString();
System.out.println(line);
tlb.clear();
line = tlb.insert(0, "DATE").insert(19, "CODE").insert(34, "UNI").toString();
System.out.println(line);
tlb.clear();

输出:

(name)                                            PRODUCTION DATE                                                       
DATE               CODE           UNI     

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    相关资源
    最近更新 更多