string.split("@");
[单数]保留
[双数]替换

解决方案 »

  1.   

    看在分的分上,给你写全了
        public void test2() {
            String a1 = "asfdas@name@kasjfaskfd@password@;lasjdfal;s @name@wewerw @leaveDate@;alskdjfaslkf";
            String name = "mike";
            String password = "1234";
            String leaveDate = "2003-09-09";        System.out.println(a1);
            a1 = replaceString(a1,"@name@",name);
            a1 = replaceString(a1,"@password@",password);
            a1 = replaceString(a1,"@leaveDate@",leaveDate);
            System.out.println(a1);
        }    public String replaceString(String whole,String source,String dest) {
            StringBuffer buff = new StringBuffer();
            int pos0 = 0;
            int pos1 = whole.indexOf(source,pos0);        while(pos1 != -1) {
                buff.append(whole.substring(pos0,pos1));
                buff.append(dest);
                pos0 = pos1 + source.length();
                pos1 = whole.indexOf(source,pos0);
            }
            buff.append(whole.substring(pos0));
            return buff.toString();
        }
      

  2.   

    import java.util.regex.*;
    import java.util.*;public class AtReplace {
      public AtReplace() {
      }  public static void main(String[] args) throws Throwable {
        String a1 = "asfdas@name@kasjfaskfd@password@;lasjdfal;s @name@wewerw @leaveDate@;alskdjfaslkf";
        StringBuffer result = new StringBuffer();
        Map map = new HashMap();    map.put("@name@", "mike");
        map.put("@password@", "1234");
        map.put("@leaveDate@", "2003-09-09");    Pattern p = Pattern.compile("(@name@)|(@password@)|(@leaveDate@)");
        Matcher m = p.matcher(a1);
        while(m.find()) {
          m.appendReplacement(result, (String)map.get(m.group()));
        }
        m.appendTail(result);
        System.out.println(result);
      }}
      

  3.   

    public static String replace(String source,String[] args)
      {
        //if(source == null || args == null ||(args.length != source.
        int start = 0;
        StringBuffer buffer = new StringBuffer(source);
        for(int i=0;i<args.length;i++)
        {
          int postion = source.indexOf("%",start);
          if((postion == -1) || ((postion+1) == source.length()))
          {
            break;
          }
          switch(source.charAt(postion + 1))
          {
            case 's':
              buffer.delete(postion,postion + 2);
              buffer.insert(postion,args[i]);
              break;
          }
          start = postion + args[i].length();
          source = buffer.toString();
        }
        return source;
      }
      public static void main(String[] args)
      {
        System.out.println(replace("abc%s%s123%s",new String[]{"abc","cde","slfjslf"}));
        System.out.println();
      }这个比较通用, 不论个数的, 你把要替换的东西放到一个String 数组里在调用自定义的replace方法就可以了。这个例子是替换%s, 你可以改一下。