java字符串替换问题

adrenine 2015-03-29 04:58:48
例如有替换规则 AB = cd ,CD = ef
若有字符串ABG则替换成cdG
若有字符串efG则替换成CDG

小弟本想用Map键值对来查找替换,但是Map不能用值来查找键,
求大神指导,怎么用java实现,跪谢!!!!
...全文
441 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_23660243 2015-04-23
  • 打赏
  • 举报
回复
超级原始:	public static String replaceString(String str) {

		if (str.contains("AB") || str.contains("CD") || str.contains("cd")
				|| str.contains("ef")) {
			str.replace("AB", "cd");
			str.replace("CD", "ef");
			str.replace("cd", "AB");
			str.replace("ef", "CD");

		}
		return str;
	}
adrenine 2015-04-15
  • 打赏
  • 举报
回复
后来我想了一下,其实这个就是互推的过程,即AB => cd,也可以cd =>AB,那把AB与cd都当成键存进Map中,也就是AB当键cd当值存一次,cd当键AB当值存一次,这样就解决了这个问题
qq_20333347 2015-03-30
  • 打赏
  • 举报
回复
char[] str={a,v,s,A,d,V}; for(int i=0;i<str.length()-1;i++) if(str[i]=='A'&&str[i+1]=='B') { str[i]='a'; str[i+1]='b'; } cd类似 应该差不多 你在看看
刘树旺great 2015-03-30
  • 打赏
  • 举报
回复
如果少量的字符串替换可以考虑上楼的方法,如果大量的还是应该用Map方法 例如3楼说的那样,本人推荐用3楼的方法
作业本_ 2015-03-30
  • 打赏
  • 举报
回复
其实在commons-collections包中提供了这种双向Map–DualHashBidiMap,可以根据key来获取value,同样也可以根据value来获取key。
lyw985 2015-03-30
  • 打赏
  • 举报
回复
个人建议先使用map存储对应的替换规则 然后遍历字符串,拼装字符串,判断替换规则 例如,字符串”ASDFGHJKL“,替换规则有 AS=as,SD=sd map里存储 {AS,as}{as,AS}{SD,sd}{sd,SD} 提取A,判断没有,提取S,组装成AS,发现有,扩展到新StringBuild里,然后从D开始 最后StringBuild做为最后结果输出
redditt 2015-03-30
  • 打赏
  • 举报
回复
String s = "若有字符串ABG则替换成cdG若有字符串efG则替换成CDG";
    s = s.replace("AB", "cd").replace("ef", "CD");
yousun4688 2015-03-29
  • 打赏
  • 举报
回复
使用正则表达式啊
rumlee 2015-03-29
  • 打赏
  • 举报
回复
你到底是要根据前面替换后面的,还是根据后面的替换前面的啊。 你想根据map的值查找key,那你可以用两个map啊,第二个map的key、value正好和第一个对调。
求注销 2015-03-29
  • 打赏
  • 举报
回复
用对应的ASCII码,你这个规则就是 A(65)B(66) ---> a(97) b(98); 就是+32

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧