java - 如何在 Java 中解析一行文本?

标签 java parsing

我有一个 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/

相关文章:

java复杂逻辑条件解析器

java - threetenbp:解析带时区名称的日期时解析异常

java - 如何使用 fillPolygon 转换正方形

parsing - 将 Lemon 解析器与自定义标记值一起使用

java - "Ping Connection Pool failed for MySQL. Communications link failure due to underlying exception" Glassfish 4

java - 动态创建接口(interface)/抽象类的对象实例

android - DOM 解析器教程

java - 在 Java 中解析从 BufferedReader 传入的字符串

java - 在 mahout 中编程

JAVA:sqlite写几条记录后抛出异常?