【问题标题】:Convert String to macAddress Formate in java [closed]在java中将字符串转换为mac地址格式[关闭]
【发布时间】:2026-02-09 17:00:02
【问题描述】:

我想知道在Java中将字符串“00155D038D01”转换为macAdress格式的最简单方法。

【问题讨论】:

  • mac地址格式是什么意思? 00:15:5D:03:8D:0100-15-5D-03-8D-01 或者别的什么?
  • 这是一个陈述而不是一个问题。请阅读常见问题:*.com/faq
  • 正是我需要将我的字符串格式化为 00-15-5D-03-8D-01..

标签: java string


【解决方案1】:

尝试使用正则表达式

char divisionChar = ':';//change to '-' if you want your mac to be like 00-15-5D-03-8D-01
String unformattedMAC = "00155D038D01";
String formattedMAC = unformattedMAC.replaceAll("(.{2})", "$1"+divisionChar).substring(0,17);

适用于您拥有的所有 MAC 地址

【讨论】:

  • 谢谢@Harlandraka 我的问题解决了..非常感谢..我想这是最好的解决方案..再次感谢
  • 您可以更具体:将“.{2}”替换为“[0-9A-F]{2}”
【解决方案2】:

显然,

public String convertToMacAddress(String input) {
   if (input.equals("00155D038D01") {
       return "00-15-5D-03-8D-01";
   } 

   return null; 
}

【讨论】:

  • +1 这确实是最简单的方法
  • 简单,但不是转换
  • +1 绝对是 OP 要求的 :)
  • 感谢@thai 的回复,但我需要字符串的通用解决方案..这样我就可以按照上面的建议将任何字符串转换为 machAdress ...谢谢
【解决方案3】:

我会说"00155D038D01".replaceAll("(..)(?!$)", "$1-") 是最简单的:)

【讨论】:

  • +1 比 harlandraka 的回答好。
  • 难以置信的简单和实用...羡慕你的头脑!
【解决方案4】:

直截了当:

String s = "00155D038D01";
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length();)
{
    sb.append(s.substring(i++, ++i));
    if(i < s.length()) sb.append("-");
}
String mac = sb.toString();

【讨论】:

    【解决方案5】:
    String address = "00155D038D01";
    StringBuilder sb = new StringBuilder(address);
    
    for(int i = 2; i < address.length()+(i/3); i+=3){
       sb.insert(i, ':');
    }
    
    System.out.println(sb.toString());
    

    【讨论】: