如何从String格式中删除未使用的位置参数

时间:2015-01-14 13:10:12

标签: java

我的模式如下:

String pattern = "{0},{1},{2},{3},{4},{5},{6},{7}";

我有一个值数组,可以用这种模式填充:

Object[] values = new String[8];

这个值数组是动态的,有时它会被完整的8个分配的插槽填充,有时它会小于那个,但绝不会超过分配的大小。

现在当它少于8个插槽(例如),并且当我使用

格式化时
MessageFormat messageFormat = new MessageFormat(pattern);
header = new StringBuffer();
messageFormat.format(values, header, null);

他们仍然是那些未找到替代品的职位:

e.g:

    String pattern = "{0},{1},{2},{3},{4}";
    Object[] values = {"abc", "cde", "gef"};
    MessageFormat messageFormat = new MessageFormat(pattern);
    StringBuffer header = new StringBuffer();
    System.out.println(messageFormat.format(values, header, null));

输出

abc,cde,gef,{3},{4}

但我想要的是那些位置也应该被移动: 最终输出应该是这样的:

abc, cde, gef

1 个答案:

答案 0 :(得分:0)

String pattern = "{0},{1},{2},{3},{4}";
String[] patternArray = pattern.split("}");
Object[] values = {"abc", "cde", "gef"};
StringBuilder patternBuilder = new StringBuilder();
for(int i = 0; i < values.length; ++i){
  patternBuilder.append(patternArray[i]).append("}");
}
pattern = patternBuilder.toString();
MessageFormat messageFormat = new MessageFormat(pattern);
StringBuffer header = new StringBuffer();
System.out.println(messageFormat.format(values, header, null));