---
title: GuavaのMapSplitterが便利
tags: []
categories: ["Programming", "Java", "com", "google", "common", "base", "Splitter", "MapSplitter"]
date: 2013-10-08T00:21:55Z
updated: 2013-10-08T00:21:55Z
---

Google Guavaの[MapSplitter][1]が便利だった。`String` -> `Map<String, String>` の変換が簡単

    import java.util.Map;
    
    import com.google.common.base.Splitter;
    
    public class Main {
    
        public static void main(String[] args) {
            Map<String, String> params = Splitter.on(";")
                    .withKeyValueSeparator("=").split(
                            "username=aaaa;password=bbb;url=dddd");
            System.out.println(params); // {username=aaaa, password=bbb, url=dddd}
        }
    
    }


trimしたい場合は`trimResults()`を挟む

    import java.util.Map;
    
    import com.google.common.base.Splitter;
    
    public class Main {
    
        public static void main(String[] args) {
            Map<String, String> params = Splitter.on(";").trimResults()
                    .withKeyValueSeparator("=").split(
                            "username=aaaa; password=bbb; url=dddd");
            System.out.println(params); // {username=aaaa, password=bbb, url=dddd}
        }
    
    }

`withKeyValueSeparator("=")`は
`withKeyValueSeparator(Splitter.on("="))`の略で内と外の`Splitter`を別々に設定できる。

[LTSV][2]のパースも簡単ですね

    import java.util.Map;
    
    import com.google.common.base.Splitter;
    
    public class Main {
    
        public static void main(String[] args) {
            Map<String, String> params = Splitter
                    .on("\t")
                    .withKeyValueSeparator(Splitter.on(":").limit(2))
                    .split("host:127.0.0.1\tident:-\tuser:frank\ttime:[10/Oct/2000:13:55:36 -0700]\treq:GET /apache_pb.gif HTTP/1.0\tstatus:200\tsize:2326\treferer:http://www.example.com/start.html\tua:Mozilla/4.08 [en] (Win98; I ;Nav)");
            System.out.println(params);
        }
    
    }

出力結果

    {host=127.0.0.1, ident=-, user=frank, time=[10/Oct/2000:13:55:36 -0700], req=GET /apache_pb.gif HTTP/1.0, status=200, size=2326, referer=http://www.example.com/start.html, ua=Mozilla/4.08 [en] (Win98; I ;Nav)}


  [1]: http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/base/Splitter.MapSplitter.html
  [2]: http://ltsv.org/
