2016-06-16 3 views
0

У меня есть массив из трех элементов строк, 0,1,2. И у меня есть строкаJava - какой самый быстрый способ заменить строку из массива

this is $0 string some text here $1 another text here $2 and some here 

что это самый быстрый способ заменить $ 0 в массив [0], $ 1 в массив [1] и $ 2 в массив [2]. Мне нужен самый быстрый, потому что у меня действительно много таких операций.

EDIT:

В настоящее время я использую следующий метод:

Formatter formatter=new Formatter(); 
String[] array=new String[]{"aaa","bbb","ccc"}; 
String result=formatter.format("some text %s another tett %s more text %s",array)); 
+3

Половина людей, задающих основные вопросы, такие как «нужен самый быстрый» или «самый эффективный» способ. Как вы делаете это сейчас? Также, сколько «действительно много операций»? – Kayaman

+3

В наши дни аппаратные средства настолько мусорны, что им нужно выработать самый последний цикл процессора. –

+0

@ Kayaman См. Мое редактирование –

ответ

0

Используя StringBuffer и предполагая, что ваши маркеры "сортируются" (т.е. $ 0, $ 1, $ 2, и не более 10 маркеров, которые можно использовать

String[] array = new String[]{"0", "1", "2"}; 
    String orig = "this is $0 string some text here $1 another text here $2 and some here"; 

    StringBuffer b = new StringBuffer(orig); 
    int lastIndex = -2; 
    for (int i = 0; i < array.length; i++) { 
     int i1 = orig.indexOf("$",lastIndex+2); 
     b.replace(i1, i1 + 2, array[i]); 
     lastIndex = i1; 
    } 
    String s = b.toString(); 

Использование JHM, кажется, это примерно в 2-3 раза быстрее, чем

String.format(orig, array) 

но, очевидно, не является общепринятым. И кто знает, может быть (или, вполне возможно, на самом деле), есть ошибка в моем коде.

Смежные вопросы