现在得到一个字符串
EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0,OPEENGNAME1='张三',OPEENGNAME2='李四',OPEENGNAME3='王二麻子',OPEENGUSERID1='3',OPEENGUSERID2='112267',OPEENGUSERID3='141755',REPSTS='0',UPDTERM='127.0.0.1',UPDUSERID='3'我先把它转化成新的sql的检索条件ip='127.0.0.1',guanliren='张三',fuwuyuan='李四',keren='王二麻子'简单的说,怎么能把上面的字符串做处理以后,得到下面的字符串谢谢大家,希望能得到你们的帮助
EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0,OPEENGNAME1='张三',OPEENGNAME2='李四',OPEENGNAME3='王二麻子',OPEENGUSERID1='3',OPEENGUSERID2='112267',OPEENGUSERID3='141755',REPSTS='0',UPDTERM='127.0.0.1',UPDUSERID='3'我先把它转化成新的sql的检索条件ip='127.0.0.1',guanliren='张三',fuwuyuan='李四',keren='王二麻子'简单的说,怎么能把上面的字符串做处理以后,得到下面的字符串谢谢大家,希望能得到你们的帮助
解决方案 »
- 为什么要加serialVersionUID
- Java中两个class关系
- 一道简单的Java题
- 请问如何使用Container Event 将一个 窗口 添加到 主界面中啊。。。。。
- java正则表达式高手
- 为什么createImage(300,500)老是返回空对象?
- 15、17位旧身份证号码 转 18位新身份证的类
- Java中有没有什么类来实现读写注册表文件?
- Corba刚开始学习,就碰到大难题(对我来说),千呼万唤没办法,鼓足勇气问大虾
- 我从黑白软件上下的JBuiler5哪位告诉我一个Serial Number 和一个key,那个网站上写的,不知咋用?xa52-?npkv-gcqzw-m69-tet
- 客户端和服务器端的应用问题
- 遇到的小问题,有点意思啊。估计很多初学者都会遇到的,大家都看看.
然后依次判断是否为你需要的字符串,如果是 进行替换截取,最后合并。
{ s = str[i].substring(1);//去掉“,”
s = s.replaceAll("OPEENGNAME1","guanliren");}
String str = "EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0," +
"OPEENGNAME1='张三',OPEENGNAME2='李四',OPEENGNAME3='王二麻子'," +
"OPEENGUSERID1='3',OPEENGUSERID2='112267',OPEENGUSERID3='141755',REPSTS='0'," +
"UPDTERM='127.0.0.1',UPDUSERID='3'";
Matcher m = Pattern.compile("([^,]+)=([^,$]+)[,$]").matcher(str);
HashMap hp = new HashMap();
while(m.find()){
hp.put(m.group(1), m.group(2));
}
//ip='127.0.0.1',guanliren='张三',fuwuyuan='李四',keren='王二麻子'
StringBuffer rtn = new StringBuffer();
rtn.append("ip="+hp.get("UPDTERM")+",");
rtn.append("guanliren="+hp.get("OPEENGNAME1")+",");
rtn.append("fuwuyuan="+hp.get("OPEENGNAME2")+",");
rtn.append("keren="+hp.get("OPEENGNAME3"));
System.out.println(rtn.toString());
如果这个字符串是固定的,就是各项的位置不变,只是你需要的内容(人名和ip)变的话,用正则表达式轻松搞定。
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexTest { public static void main(String[] args) {
String str="EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0,OPEENGNAME1='张三',OPEENGNAME2='李四 ',OPEENGNAME3='王二麻子',OPEENGUSERID1='3',OPEENGUSERID2='112267', OPEENGUSERID3='141755',REPSTS='0',UPDTERM='127.0.0.1',UPDUSERID='3'";
String result="";
Matcher m = Pattern.compile(".*OPEENGNAME1=(.+),OPEENGNAME2=(.+),OPEENGNAME3=(.+),OPEENGUSERID1.*UPDTERM=(.+),UPDUSERID.*").matcher(str);
if(m.matches())
{
result="ip="+m.group(4)+",guanliren="+m.group(1)+",fuwuyuan="+m.group(2)+",keren="+m.group(3);
}
System.out.println(result); }}
如果EXAMAGE=10,EXAMAGEDAY=14,EXAMAGEMONTH=0...这样的顺序不固定,就是说可能会有
EXAMAGEMONTH=0跑到前面的,可以用上面的那个HashMap的例子