我有一个 Java 程序,其中收到一行类似于以下内容的文本
clid=1 cid=2 client_database_id=1 client_nickname=Alessandro client_type=0|clid=2 cid=2 client_database_id=10 client_nickname=Braden client_type=1
文本是从 Teamspeak 查询接收的,并且始终具有相同数量的参数。我需要以一种可以接收 clid
值的方式解析它。通过了解 client_nickname
的值,例如,类似 clid.get("Alessandro")
接收1
,和clid.get("Braden")
接收2
,可能带有HashMap<String, Integer>
.
是否有一种简单的方法来解析该格式的数据?
最佳答案
你也可以这样做。
static HashMap<String, HashMap<String, String>> extractData(String str) {
HashMap<String, HashMap<String, String>> data = new HashMap<>();
for(String s: str.split("\\|")) {
HashMap<String, String> entries = new HashMap<>();
for(String s2: s.split(" ")) {
String[] entry = s2.split("=");
entries.put(entry[0], entry[1]);
}
data.put(entries.get("client_nickname"), entries);
}
return data;
}
public static void main(String[] args) {
String str = "clid=1 cid=2 client_database_id=1 client_nickname=Alessandro client_type=0|clid=2 cid=2 client_database_id=10 client_nickname=Braden client_type=1";
HashMap<String, HashMap<String, String>> data = extractData(str);
System.out.println(data.get("Alessandro").get("clid"));
}
关于java - 如何在 Java 中解析一行文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24771938/