我第一道题连明白都没明白,太基础了,第二题刚有点思路但是没做完,回来后再做没有成功。
我的初步思路是用这个: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中找不到域值,以空字符串""替换。
我的初步思路是用这个: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中找不到域值,以空字符串""替换。
第一题也简单,修正值后直接转char就可以了吧
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();
}
}
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();
}
第一个就是对字符串操作,用StringBuffer 和split()
%02x是什么呢?
return new String(
new char[]{
"0123456789ABCDEF".charAt(bt>>4),
"0123456789ABCDEF".charAt(bt&0x0f)
}
);
}
用于对字节数组中指定的内容执行Base64 编码;Base64.decodeBase64(byte[] byteArray),用于对字节
数组中指定的内容执行Base64解码。
return new String(
new char[]{
"0123456789ABCDEF".charAt(b>>>4),
"0123456789ABCDEF".charAt(b&0x0f)
}
);
}
看着答案感觉不是很难
可自己做不出
学习ing········