new StringTokenizer(b,",");java.util.StringTokenizer 是一个类,不是方法。
String b= "bbb,ccc,ddd,eee,fff,ggg,hhh,jjj,jkj"; StringTokenizer st = new StringTokenizer(bbb,","); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); } 得到了bbb,ccc,ddd 但不知道怎么用replaceAll这个方法?
StringTokenizer st = new StringTokenizer(bbb,","); while (st.hasMoreTokens()) { aaa.replaceAll(st.nextToken(), ""); } aaa.replaceAll(",","");
楼主需求真够复杂,而且还象挤牙膏一次出一点. :) 那就倒过来.先解析b,放在一个Map中. Map map = new HashMap(); StringTokenizer st = new StringTokenizer(bbb,","); while(st.hasMoreTokens()) { map.put(st.nextToken(), ""); } 然后再同样操作a StringBuffer ret = new StringBuffer(); st = new StringTokenizer(aaa, ","); while(st.hasMoreTokens()) { String value = st.nextToken(); if ( map.containsKey(valye) ) {continue;} // 如果重复就忽略. // 一个一个附加在StringBuffer后面. }
out.println("有重复!!");
String output=bbb.replaceAll(aaa,"");
out.println(output);
}
如果bbb里面包含有aaa的内容,就把这些字符删除,保留不同的
能实现吗?
string bbb="abcedf";
string aaa="dfgh";
for(i=0;i<bbb.length;i++)
if(aaa.indexOf(bbb.charAt(i))==-1)
ccc=ccc+bbb.charAt(i);
public final class DupStringEraser {
private DupStringEraser() {} public static String eraseDup(String src, String dup) {
if(src==null||dup==null) {throw new IllegalArgumentException();}
return src.replaceAll(dup,"");
}
}
单元测试:
public class TestDupStringEraser extends TestCase {
public TestDupStringEraser(String name) {super(name);} public void testEraseDup() {
boolean exception = false;
try {DupStringEraser.eraseDup(null, null);}
catch(Exception ex) {exception = true;}
assertTrue(exception); exception = false;
try {DupStringEraser.eraseDup(null, "foo");}
catch(Exception ex) {exception = true;}
assertTrue(exception); exception = false;
try {DupStringEraser.eraseDup("foo", null);}
catch(Exception ex) {exception = true;}
assertTrue(exception); String src = "ABC";
String dup = "foo";
assertEquals(src, DupStringEraser.eraseDup(src, dup)); src = "ABCABCBCAB";
dup = "BC";
assertEquals("AAAB", DupStringEraser.eraseDup(src, dup));
}
}
if there's no special character.
String a ="aaa,bbb,ccc,ddd ,eee";
String b = "bbb,ccc,ddd,eee,fff";
then should be: "fff"
分别对以上使用replaceAll,就可以得到最后的fff(还要把逗号替换掉)
有这个方法吗?我怎么没查到?
StringTokenizer st = new StringTokenizer(bbb,",");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
得到了bbb,ccc,ddd
但不知道怎么用replaceAll这个方法?
while (st.hasMoreTokens()) {
aaa.replaceAll(st.nextToken(), "");
}
aaa.replaceAll(",","");
那就倒过来.先解析b,放在一个Map中.
Map map = new HashMap();
StringTokenizer st = new StringTokenizer(bbb,",");
while(st.hasMoreTokens()) {
map.put(st.nextToken(), "");
}
然后再同样操作a
StringBuffer ret = new StringBuffer();
st = new StringTokenizer(aaa, ",");
while(st.hasMoreTokens()) {
String value = st.nextToken();
if ( map.containsKey(valye) ) {continue;} // 如果重复就忽略.
// 一个一个附加在StringBuffer后面.
}