2015-12-02 2 views
2

Я ищу String Utils, чтобы я мог сделать что-то вроде этого.Заменить переменную в String

String input = "this is the $var on $date" 
someUtil.evaluate(input, [var: "end", date: "11/11/11"]) 

вывод: это конец 11/11/11.

someUtil.evaluate(input, [var: "start", date: "10/10/10"]) 

выход: это начало 10/10/10.

+1

havent использовал весенние классы для любых манипуляций с строкой. Удивительно, что есть класс для StringUtils (http://docs.spring.io/spring-framework/docs/3.2.0.M1/api/org/springframework/util/StringUtils.html). Но даже они предлагают использовать apache common api – saurabh

+1

Вы могли бы реализовать самостоятельно, используя Map и String.replaceFirst (regex, replacement) –

+0

Зачем вам нужна утилита Spring? Вы не можете использовать SimpleDateFormat? System.out.println (новый формат SimpleDateFormat ("yy/MM/dd"). (New Date())); – user1766169

ответ

5

Используйте стандартный Java MessageFormat, это довольно мощный (читай его класс уровень JavaDoc)

Date endDate = new GregorialCalendar(2011, Calendar.NOVEMBER, 11).getTime(); 
... 
MessageFormat.format(
     "this is the {0} on {1,date,yy/MM/dd}", 
     new Object[]{"end", endDate}); 
0

Вам действительно нужно, как входящий параметр, который «массив»? Если нет, то вы можете реализовать так легко, как это ..

private static String replaceVarByVal(String toReplace,String var,String val){ 
     return toReplace.replace(var, val); 
} 

(Вы можете легко изменить, что Инком Params массивов, но лучше должно быть, например, Map- ключа переменной, значение новое значение «заполнитель "- $ вар)

Массивы вариант:

private static String replaceVarByVal(String toReplace,String[] var,String[] val){ 
     String toRet = toReplace; 
     //arrays logic problem 
     if(var.length != val.length){ 
      return null; 
     }else{ 
      for (int i = 0; i < var.length; i++) { 
       toRet = toRet.replace(var[i], val[i]); 
      } 
     } 
     return toRet; 
} 

Лучше вариант с картой:

private static String replaceVarByVal(String toReplace,Map<String, String> paramValsMap){ 
     String toRet = toReplace; 
     for (Map.Entry<String, String> entry : paramValsMap.entrySet()) 
     { 
      toRet=toRet.replace(entry.getKey(), entry.getValue()); 
     } 
     return toRet; 
} 

(И т шляпа может использоваться повсеместно для чего-либо)