2014-02-16 232 views
0

我正在解构一个Java对象,从获取器中获取所有必需的字符串值,并将所有这些值连接成每个对象一个字符串。我转念一想存储每个字符串是一个Java字符串操作 - 添加空格或子字符串

ArrayList<String> 

我串联字符串到每个对象一个字符串,这样我就可以一个PDF文件(PDFBOX)的报告打印出来...我想将每一行的格式设置为与表格中的相同。例如,无论字符串1是3个字符还是103个字符,它总是会填充25个字符空间 - 要么是使用更小的字符串,要么使用空间进行缓冲,以取决于所需的大小。

我的问题是如何有效地做到这一点?对于这个例子可以说我要求每个条目的长度为25个字符。所以对于我在下面追加的每个值,我如何强制所有条目都是25个字符长?

String SPACE=" "; 
    for(People peeps: list){ 
     builder = new StringBuilder(); 
     name =(peeps.getName()); 
     // if(name.length()>25){name=name.substring(0,25);} 
     builder.append(name)     
      .append(SPACE) 
      .append(peeps.getCode()) 
      .append(SPACE) 
      .append(peeps.getReference()) 
      .append(SPACE) 
      .append(peeps.getDate()) 
      .append(SPACE) 
      .append(peeps.getStatus()) 
      .append(SPACE) 
      .append(peeps.getValue()); 

     reportList.add(builder.toString()); 
    } 

e.g

回答

2

使用Formatter类。

StringBuilder sb = new StringBuilder(); 
Formatter formatter = new Formatter(sb); 
sb.append("|"); 
formatter.format("%-25.25s", "This is some text with more than 25 characters."); 
sb.append("|"); 
formatter.format("%-25.25s", "Some text with less."); 
sb.append("|"); 
formatter.format("%-25.25s", "Some other text."); 
sb.append("|"); 
System.out.println(formatter.toString()); 

输出:

|This is some text with mo|Some text with less.  |Some other text.   | 
+0

完美,正是我一直在寻找... – user1843591

1

阿帕奇百科全书提供了易于使用的API与弦乐的工作:

name = StringUtils.substring(name, 0, 25); 
name = StringUtils.leftPad(name, 25, ' ');