大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > 替换字符串中美元大括号的字符串

替换字符串中美元大括号的字符串


[摘要]本文主要是对替换字符串中美元大括号的字符串的讲解,希望对大家学习替换字符串中美元大括号的字符串有所帮助。

  替换字符串中美元大括号的字符串

  import java.util.ArrayList;

  import java.util.LinkedHashMap;

  import java.util.List;

  import java.util.Map;

  import java.util.regex.Matcher;

  import java.util.regex.Pattern;

  /**

  * */

  public class RegUtil {

  /**

  * 作用查找字符串中所有的美元大括号的中间的字符

  * @param value 字符串

  * */

  public static List findData(String value){

  /*匹配美元大括号的字符串*/

  String reg = "\\$\\{([^}]+)\\}";

  Pattern p = Pattern.compile(reg);

  Matcher matcher = p.matcher( value ) ;

  ArrayListarray = new ArrayList();

  /*找出所有美元 大括号的字符串*/

  while(matcher.find()){

  String tempValue = matcher.group() ;

  /*取出大括号中间的字符*/

  tempValue = tempValue.substring( 2 , tempValue.length() -1) ;

  /*判断该字符是否已经查找到*/

  if(!array.contains(tempValue)){

  array.add( tempValue ) ;

  }

  }

  return array;

  }

  /**

  * 替换所以的美元字符串

  * @param value 字符串

  * map 替换的值

  * noExistsReplace 是否全部替换

  * */

  public static String replace(String value,Map map , boolean noExistsReplace){

  for(Map.Entry entry : map.entrySet()){

  String key = "\\$\\{" + entry.getKey() + "\\}";

  value = value.replaceAll(key, entry.getValue()) ;

  }

  if(noExistsReplace){

  List datas = findData( value ) ;

  Map tempValue = new LinkedHashMap();

  for(String data : datas){

  tempValue.put(data , "" ) ;

  }

  return replace(value , tempValue, false ) ;

  }

  return value;

  }

  public static void main(String[] args){

  String value = "${zs}很好,${li}" ;

  List datas = findData(value) ;

  Map map = new LinkedHashMap();

  int idx = 1 ;

  for(String data : datas){

  map.put(data, "值" + ( ++idx ) ) ;

  }

  map.remove("li");

  System.out.println( replace(value, map , true ) ) ;

  }

  }



相关评论