【问题标题】:Problems with string split in java (Android)java(Android)中字符串拆分的问题
【发布时间】:2015-01-23 22:01:06
【问题描述】:

当我运行它时(它是一个 android 应用程序的一部分)它可以工作。

String[] hex = new String[6];
        hex[0] = "A4";
        hex[1] = "8A";
        hex[2] = "5B";
        hex[3] = "9O";
        hex[4] = "U4";
        hex[5] = "D8";

 if (hex.length != 6) {
            throw new IllegalArgumentException("Invalid MAC address.");
        }
        try {
            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.");
        }

但如果我这样做:

String[] hex = macStr.split("(\\:|\\-)"); 

if (hex.length != 6) {
            throw new IllegalArgumentException("Invalid MAC address.");
        }
        try {
            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.");
        }

没用... 我试图找到问题所在,似乎第一个十六进制与第二个不一样;但如果我做一个 println,它们看起来是一样的。

【问题讨论】:

  • 变量 macStr 包含什么?

标签: java android string


【解决方案1】:

您正在解析xx-xx-xx-xx-xx-xxyy:yy:yy:yy:yy:yy 形式的mac 地址 您的拆分方法有效。但是您在这里可能会错过的是数组的初始化。数组是固定长度的。它应该用大小来定义。

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.");
        }

【讨论】:

    【解决方案2】:

    使用masStr.split("[:\\-]") 分隔“-”和“:”符号。

    如果它不起作用(我只是测试它以防万一 - 它有效) - 检查您的输入

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 2021-10-23
      • 1970-01-01
      相关资源
      最近更新 更多