有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

字符串Java解析输出的消息

我需要以最有效的方式将其解析为字符串。我现在有这条线

D[date-string] T[time-string] N[name-string] M[message-string]

需要分别解析为四个字符串

private String time; //would equal time-string
private String date; //would equal date-string
private String name; //would equal name-string
private String message; //would equal message-string

有没有一个简单的方法可以做到这一点


共 (5) 个答案

  1. # 1 楼答案

    以下逻辑将起作用。雷吉克斯会怎么做还不确定。但是下面的代码也可以,因为它没有循环,所以我认为它可能是最佳的解决方案

    String s = "D[date-string] T[time-string] N[name-string] M[message-string]";   
    String[] str = s.split(" ");    
     String date = str[0].substring(str[0].indexOf("[")+1, str[0].lastIndexOf("]")); //would equal time-string
     String time=str[1].substring(str[1].indexOf("[")+1, str[1].lastIndexOf("]")); //would equal date-string
     String name=str[2].substring(str[2].indexOf("[")+1, str[2].lastIndexOf("]")); //would equal name-string
     String message=str[3].substring(str[3].indexOf("[")+1, str[3].lastIndexOf("]"));
    
  2. # 2 楼答案

    您可以使用正则表达式和组来匹配和提取此类数据: 例如:

        Pattern p = Pattern.compile("D(\\w+) T(\\w+) N(\\w+) M(\\w+)");
        Matcher m = p.matcher(yourString);
        if (m.matches()){
            String d = m.group(1);
            String t = m.group(2);
            String n = m.group(3);
            String w = m.group(4);
        }
    

    括号内的模式保存为组,可以在匹配后提取(它以1开头,因为0是整个匹配)。 然后,您必须将其更改为您想要接受的字符和模式

  3. # 4 楼答案

    我不确定我是否理解你的意思,但看起来使用正则表达式是进行这种解析的最简单的方法

  4. # 5 楼答案

    看看herehere,你必须相应地调整它