我的模式如下:
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
答案 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));