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;
/**
* 创建日期:2014年6月9日 17:23:29
* 作者:黄飞
* 联系方式:QQ:834865081
* 邮箱:834865081@qq.com
* */
public class RegUtil {
/**
* @author 黄飞
* 作用查找字符串中所有的美元大括号的中间的字符
* @param value 字符串
* */
public static List<String> findData(String value){
/*匹配美元大括号的字符串*/
String reg = "\\$\\{([^}]+)\\}";
Pattern p = Pattern.compile(reg);
Matcher matcher = p.matcher( value ) ;
ArrayList<String>array = new ArrayList<String>();
/*找出所有美元 大括号的字符串*/
while(matcher.find()){
String tempValue = matcher.group() ;
/*取出大括号中间的字符*/
tempValue = tempValue.substring( 2 , tempValue.length() -1) ;
/*判断该字符是否已经查找到*/
if(!array.contains(tempValue)){
array.add( tempValue ) ;
}
}
return array;
}
/**
* @author 黄飞
* 替换所以的美元字符串
* @param value 字符串
* map 替换的值
* noExistsReplace 是否全部替换
* */
public static String replace(String value,Map<String,String> map , boolean noExistsReplace){
for(Map.Entry<String,String> entry : map.entrySet()){
String key = "\\$\\{" + entry.getKey() + "\\}";
value = value.replaceAll(key, entry.getValue()) ;
}
if(noExistsReplace){
List<String> datas = findData( value ) ;
Map<String,String> tempValue = new LinkedHashMap<String, String>();
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<String> datas = findData(value) ;
Map<String,String> map = new LinkedHashMap<String, String>();
int idx = 1 ;
for(String data : datas){
map.put(data, "值" + ( ++idx ) ) ;
}
map.remove("li");
System.out.println( replace(value, map , true ) ) ;
}
}
替换字符串中美元大括号的字符串,布布扣,bubuko.com
原文地址:http://blog.csdn.net/hfmbook/article/details/29596127