java(Android)中字符串拆分的问题
当我运行这个程序时,它是android应用程序的一部分,可以正常工作 字符串[]十六进制=新字符串[6]; 十六进制[0]=A4; 十六进制[1]=8A; 十六进制[2]=5B; 十六进制[3]=9O; 十六进制[4]=U4; 十六进制[5]=D8; 如果十六进制长度!=6 { 抛出新的IllegalArgumentException有效MAC地址。; } 试一试{ 对于int i=0;i<6;i++{ 字节[i]=字节整数.parseInthex[i],16; } } 捕获数格式{ 在MAC地址中抛出新的IllegalArgumentExceptionValid十六进制数字。; } 但如果我这样做: 字符串[]hex=macStr.split\\:\ \ \-; 如果十六进制长度!=6 { 抛出新的IllegalArgumentException有效MAC地址。; } 试一试{ 对于int i=0;i<6;i++{ 字节[i]=字节整数.parseInthex[i],16; } } 捕获数格式{ 在MAC地址中抛出新的IllegalArgumentExceptionValid十六进制数字。; } 它不起作用。。。 我试着找出问题的地方,好像第一个十六进制和第二个不一样;但是如果我打印,它们看起来是相同的。使用masStr.split[:\\-]围绕“-”和“:”符号进行拆分。java(Android)中字符串拆分的问题,java,android,string,Java,Android,String,当我运行这个程序时,它是android应用程序的一部分,可以正常工作 字符串[]十六进制=新字符串[6]; 十六进制[0]=A4; 十六进制[1]=8A; 十六进制[2]=5B; 十六进制[3]=9O; 十六进制[4]=U4; 十六进制[5]=D8; 如果十六进制长度!=6 { 抛出新的IllegalArgumentException有效MAC地址。; } 试一试{ 对于int i=0;i
如果它不工作,我只是测试它以防万一-它工作-检查您的输入您正在解析一个mac地址,格式为xx-xx-xx-xx-xx或yy:yy:yy:yy:yy 你的拆分方法很有效。但在这里您可能会错过数组的初始化。数组是固定长度的。它应该用大小来定义
byte[] bytes;
String macStr="ab:ab-cd:ab:ab-cd";
String[] hex = macStr.split("(\\:|\\-)");
System.out.println(hex.length);
if (hex.length != 6) {
throw new IllegalArgumentException("Invalid MAC address.");
}
try {
bytes=new byte[6];
for (int i = 0; i < 6; i++) {
bytes[i] = (byte) Integer.parseInt(hex[i], 16);
}
}
catch (NumberFormatException e) {
throw new IllegalArgumentException("Invalid hex digit in MAC address.");
}
变量macStr包含什么?