我有一个字符串:
[code="java"]String str = "{1,1,2} + {3,2,1} + {$1}";[/code]
请教各位,使用正则表达式把“{...}”直接替换成字母。
替换后的结果:
[code="java"]String str = "a + b + c";[/code]
a、b、c是根据“{...}”的个数自增的,如果有4个“{...}”那个替换后的字母就是a、b、c、d。
替换完字符串后,同时替换的字母会被记录在Map集合里面:
[code="java"]
key="a",value="{1,1,2}"
key="b",value="{3,2,1}"
...
[/code]
各位帮忙看下正则表达式方不方便解决以上问题,或者有更好的思路就可以提供给我,谢谢。
帮你写了一个
[code="java"]
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExp
{
/**
* TODO 方法说明
*
* @param args
*/
public static void main(String[] args)
{
String str = "{1,1,2} + {3,2,1} + {$1} + {$1}";
Pattern pattern = Pattern.compile("\\{[^\\{\\}]*\\}");
Matcher matcher = pattern.matcher(str);
char a= 97;
Map<String,String> map = new HashMap<String,String>();
String ret = str;
String temp = "";
while(matcher.find()){
temp = "" + a;
map.put(temp, matcher.group());
ret = ret.replaceFirst("\\{[^\\{\\}]*\\}", temp);
++a;
}
System.out.println(map);
System.out.println(ret);
}
}
[/code]
public static void main(String[] args) {
String str = "{1,1,2} + {3,2,1} + {$1}";
String[] array = str.split(" \+ "); //用" + " 分割
Map map = new HashMap();
String result = "";
int startIdx = 97; //a的ascii码
for(int i = 0; i < array.length; i++) {
String key = "" + (char)(startIdx + i);
map.put(key, array[i]);
result += (i > 0) ? (" + " + key) : key;
}
System.out.println(result);
System.out.println(map);
}
[code="java"]
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Test {
public static void main(String[] args) {
String str = "{1,1,2} + {3,2,1} + {$1}";
String strtemp[]=str.split("\+");
char key=97;
Map map=new HashMap();
for(int i=0;i<strtemp.length;i++){
String keytemp=key+"";
map.put(keytemp, strtemp[i]);
key++;
}
Set set=map.keySet();
Iterator it=set.iterator();
while(it.hasNext()){
String keycode=(String)it.next();
System.out.println("key: "+keycode+" value: "+map.get(keycode));
}
}
}[/code]
[code="java"]import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Test {
public static void main(String[] args) {
String str = "{1,1,2} + {3,2,1} - {$1}*{2,1,1}/{1,1,1}";
str=str.replaceAll("\+", "\+");
str=str.replaceAll("\-", "\+");
str=str.replaceAll("\*", "\+");
str=str.replaceAll("\/", "\+");
String strtemp[]=str.split("\+");
char key=97;
Map map=new HashMap();
for(int i=0;i<strtemp.length;i++){
String keytemp=key+"";
map.put(keytemp, strtemp[i]);
key++;
}
Set set=map.keySet();
Iterator it=set.iterator();
while(it.hasNext()){
String keycode=(String)it.next();
System.out.println("key: "+keycode+" value: "+map.get(keycode));
}
}
}[/code]
lz: 使用lovewhzlq 大牛的代码就可以啦~