我需要创建固定长度的记录,这些记录主要由空间组成,但在某些已知的位置上人口稀少。基本上我需要生成的是遗留文件格式,其中记录由大量固定长度字段组成。我只需要填充一些这些字段,所以我想首先创建空间缓冲区,并在特定位置写入特定长度的格式化字段
答案 0 :(得分:2)
考虑将StringUtils用于leftPad,rightPad,center和repeat。 http://www.jdocs.com/lang/2.1/org/apache/commons/lang/StringUtils.html
当你自己创造结果时,这会有所帮助,所以你真的不需要处理位置和子串......
答案 1 :(得分:1)
试试这个:
StringBuilder b = new StringBuilder();// Or use StringBufer if you need synchronization
b.append("----------"); //use dash instead of space for visibility
int pos = 4;
String replacement = "foo";
b.replace(pos, pos + replacement.length(), replacement); //Attention: if the length of the replacement is greater than the length of the original content, the exceeding chars will be appended
System.out.println(b); //----foo---
答案 2 :(得分:0)
我不会从创建一个空格字符串开始,其长度是记录的总长度。我只需要使用StringBuilder
类并根据需要追加字段(它会在需要时自动增长)。将字段添加到记录时,我会向每个字段添加空格。
public class FixedWidthBuilder {
private StringBuilder record = new StringBuilder();
public void append(int len, String value){
if (len < value.length()){
value = value.substring(0, len);
} else if (len > value.length()){
StringBuilder sb = new StringBuilder(value);
for (int i = value.length(); i < len; i++){
sb.append(' ');
}
value = sb.toString();
}
record.append(value);
}
@Override
public String toString(){
return record.toString();
}
}
答案 3 :(得分:0)
您可能希望实现一个表示固定长度记录的类,并且该类知道记录中的每个字段。默认为所有空格,并为您关注的字段提供设置器。
在内部,实施取决于您。也许Thomas和user1001027的答案组合似乎是合理的。