Google GuavaのMapSplitterが便利だった。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のパースも簡単ですね
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)}