我第一道题连明白都没明白,太基础了,第二题刚有点思路但是没做完,回来后再做没有成功。
我的初步思路是用这个:String result = template.replace(s,map.get(s1));这是题目大家看下吧,做出来的炫耀下啊大家分享啊:1:“密码”“MAC码”等数据由于是二进制数据,在Java中只能以byte[]形式存放,
但往往需要转化成可见字符串在通讯报文(如XML)中传递。
例如,密文: byte[] password = {0x5A,0x08,0x00,0xFF,0xB2,0x33,0xDE,0xFF};
转化为字符串:"5A0800FFB233DEFF"
请编程实现方法byte2HexString完成这种转化:
    public String byte2HexString(byte[] b)
注:字符'A'的数值为0x41,字符'0'的数值为0x302:字符串模板:
    String template="尊敬的客户${customerName}你好!本次消费金额${amount},您帐户${accountNumber}上的余额为${balance}";
其中以 ${ 开始 } 结尾的为待替换的变量域。
数据存放于Map中,key为域名,value为域值。如:
Map--
    customerName = 刘明
    accountNumber = 888888888888888
    balance = $1000000000000000000000.00
    amount = $5000.00
请编写函数:
    public static String composeMessage(String template, Map data) throw Exception
实现将任意模板字符串中的变量域,按域名替换为data中的域值。
例如,上例替换结果为:
    "尊敬的客户刘明你好!本次消费金额$5000.00,您帐户888888888888888上的余额为$1000000000000000000000.00"
注:如果Map中找不到域值,以空字符串""替换。

解决方案 »

  1.   

     关注ING...........
      

  2.   

    第2题应该很简单,用正则表达式记录位置
    第一题也简单,修正值后直接转char就可以了吧
      

  3.   

    import java.util.HashMap;
    import java.util.Map;
    import java.util.regex.Pattern;public class Test {    public static void main(String args[]) {        
            byte[] password = {0x5A,0x08,0x00,(byte)0xFF,(byte)0xB2,0x33,(byte)0xDE,(byte)0xFF};
            System.out.println(byte2HexString(password));
            
            String template="尊敬的客户${customerName}你好!本次消费金额${amount}," +
                    "您帐户${accountNumber}上的余额为${balance}";
            Map<String, String> data = new HashMap<String, String>();
            data.put("customerName", "刘明"); 
            data.put("accountNumber", "888888888888888"); 
            data.put("balance", "$1000000000000000000000.00"); 
            data.put("amount", "$5000.00");
            System.out.println(composeMessage(template, data));
        }
        
        public static String byte2HexString(byte[] b) {
            if(b == null || b.length == 0) {
                return "";
            }
            StringBuffer sb = new StringBuffer(b.length * 2);
            for(int i = 0; i < b.length; i++) {
                sb.append(String.format("%02X", b[i]));
            }
            return sb.toString();
        }
        
        public static String composeMessage(String template, Map<String, String> data) {
            int index = template.indexOf("${");
            if(index < 0) {
                return template;
            }
            int last = -1;
            StringBuffer sb = new StringBuffer(); 
            while(index > 0) {
                sb.append(template.substring(last + 1, index));
                last = template.indexOf("}", last + 1);
                String str = template.substring(index + 2, last);
                index = template.indexOf("${", last + 1);
                String replacement = data.get(str);
                if(replacement != null) {
                    sb.append(replacement);
                }
            }
            return sb.toString();
        }
    }
      

  4.   

    有点小错误,改一下:    public static String composeMessage(String template, Map<String, String> data) {
            int index = template.indexOf("${");
            if(index < 0) {
                return template;
            }
            int last = -1;
            StringBuffer sb = new StringBuffer(); 
            while(index >= 0) {
                sb.append(template.substring(last + 1, index));
                last = template.indexOf("}", last + 1);
                String str = template.substring(index + 2, last);
                index = template.indexOf("${", last + 1);
                String replacement = data.get(str);
                if(replacement != null) {
                    sb.append(replacement);
                }
            }
            return sb.toString();
        }
      

  5.   

    Map<String, String> data   "< >"这个括号是什么意思??
      

  6.   

    <>JDK1.5的新特性,泛形
    第一个就是对字符串操作,用StringBuffer 和split()
      

  7.   

    太叼了。请问谁知这个String.format("%02X", b[i])的意思.
    %02x是什么呢?
      

  8.   

    private static String byte2hexString(byte bt){
    return new String(
    new char[]{
    "0123456789ABCDEF".charAt(bt>>4),
    "0123456789ABCDEF".charAt(bt&0x0f)
    }
    );
    }
      

  9.   

    Base64类的使用相当简单,最主要的两个静态方法是:Base64.encodeBase64(byte[] byteArray),
    用于对字节数组中指定的内容执行Base64 编码;Base64.decodeBase64(byte[] byteArray),用于对字节
    数组中指定的内容执行Base64解码。
      

  10.   

    private static String byte2hexString(int b){ 
    return new String( 
    new char[]{ 
    "0123456789ABCDEF".charAt(b>>>4), 
    "0123456789ABCDEF".charAt(b&0x0f) 

    ); 
    }
      

  11.   

    五楼正解
    看着答案感觉不是很难
    可自己做不出
    学习ing········