2015-01-14 2 views
2

У меня есть картина, как:Как удалить неиспользуемые позиционные параметры формата Струнного

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); 

их остается тем, положение которых заменителями не найдены:

например:

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

Вы можете использовать 'ArrayList' вместо простого массива. –

+1

Возможно, ваш реальный формат более сложный. Но в этом конкретном случае вы можете просто присоединиться к строкам: http://stackoverflow.com/questions/187676/java-equivalents-of-c-sharp-string-format-and-string-join –

+0

Я думаю, что это не будет сделайте любую разницу, так как все еще в ArrayList мои значения могут быть меньше параметров позиции, представленных в шаблоне .... @ Andre – BigBang

ответ

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)); 
Смежные вопросы