我正在尝试将一些旧的 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
最佳答案
我遇到了类似的问题,并最终为此创建了一个构建器。
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
关于Java 相当于 Visual Basic 选项卡功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046374/