1

20万行のcsvファイルと、次のように定義された3種類のMACアドレスがあります。

  • ECE1A9312000
  • E8:6D:52:75:2D:16
  • 24-C9-A1-15-89-B0

コロンで区切られた形式のみにとどまることが私の目標です。

したがって、に変換する-こと:は大したことではありません:

mac = mac.replace("-", ":");

しかし、に変換ECE1A9312000する方法EC:E1:A9:31:20:00

正規表現を使用することを考えましたが、非常に多くのデータ (〜 80k) にグループを使用するにはコストがかかりすぎます。

それぞれを実行してchar追加する必要がありますか:

お気に入り:

for(int i=0; i<mac.length(); i++){
    ch = mac.charAt(i);

    if(i % 2 == 0 && i != 0){
        tmp += ':';
    }
    tmp += ch;
}

またはより効率的な方法がありますか?

ありがとうございました、

4

5 に答える 5

1

これを試して

String x="ECE1A9312000";
String finals="";
for(int i=0;i<x.length();i=i+2)
{
    if((i+2)<x.length())
finals+=x.substring(i, i+2)+":";
    if((i+2)==x.length())
    {
        finals+=x.substring(i, i+2);

    }

}
System.out.println(finals);

出力 EC:E1:A9:31:20:00

于 2013-11-22T11:05:53.670 に答える
1

文字ごとに反復し、見つかった文字が「-」の場合は 2 ステップごとに「:」に置き換え、文字または数字の場合は「:」文字を挿入します。

于 2013-11-22T10:55:38.173 に答える
0
    String mac[] = {"ECE1A9312000", "24-C9-A1-15-89-B0", "E8:6D:52:75:2D:16"};

    for (int i = 0; i< mac.length; i++)
    {
        if (mac[i].charAt(2) == '-')
            mac[i] = mac[i].replace("-", ":");
        else if (mac[i].charAt(2) != ':')
            mac[i] = new StringBuilder(mac[i].substring(0,2)).append(":").append(mac[i].substring(2,4))
                    .append(":").append(mac[i].substring(4,6)).append(":").append(mac[i].substring(6,8))
                    .append(":").append(mac[i].substring(8,10)).append(":").append(mac[i].substring(10)).toString();        
    }
    for (int i = 0; i< mac.length; i++)
        System.out.println(mac[i]);

出力:

EC:E1:A9:31:20:00
24:C9:A1:15:89:B0
E8:6D:52:75:2D:16
于 2013-11-22T11:31:00.867 に答える