【问题标题】:Unable to parse user agent string in java无法在 java 中解析用户代理字符串
【发布时间】:2017-08-13 06:17:24
【问题描述】:

我收到以下用户代理字符串

["Mozilla/5.0","(Macintosh;","Intel","Mac","OS","X","10.8;","rv:31.0)","Gecko/20100101","Firefox/31.0"]

我正在尝试将其解析为字符串并将其转换为字符串数组,但我无法将其作为字符串读取。有没有更好的方法来读取方括号中的用户代理数据

public class AgentParse{

     public static void main(String []args){
        String a="""["Mozilla/5.0","(Macintosh;","Intel","Mac","OS","X","10.8;","rv:31.0)","Gecko/20100101","Firefox/31.0"]""";
        String st=a.replace('[', ' ').replace(']', ' ').replace('(', ' ').replace(')', ' ');
        String[] arr=st.split(",");
        System.out.println(arr[0]);

        }

我有一个此类字符串的列表,我无法复制粘贴每个字符串并转义字符。我正在寻找可以保存上述数据的 java 数据类型

【问题讨论】:

  • 错误是什么?你的预期输出是什么?
  • 你必须转义用户代理字符串中的双引号
  • Java 没有三引号字符串。
  • @Ravi 我有一个这样的字符串列表,我不能为每个字符串单独转义字符。
  • @srivathsava 你必须转义它,否则你需要删除所有双引号。

标签: java user-agent


【解决方案1】:

从您现有的代码中,您似乎正在寻找 Mozilla/5.0 作为输出。因此,首先您需要转义所有双引号

String str = "[\"Mozilla/5.0\",\"(Macintosh;\",\"Intel\",\"Mac\",\"OS\",\"X\",\"10.8;\",\"rv:31.0)\",\"Gecko/20100101\",\"Firefox/31.0\"]";
System.out.println(str.split(",")[0].replace("[",""));

会输出

"Mozilla/5.0"

【讨论】:

    【解决方案2】:

    如果要解析所有字符串。

    String a = "[\"Mozilla/5.0\",\"(\"Macintosh;\",\"Intel\",\"Mac\",\"OS\",\"X\",\"10.8;\",\"rv:31.0\")\",\"Gecko/20100101\",\"Firefox/31.0\"]";
    String[] newArray = a.split(",");
        for (String s : newArray) {
            System.out.println(s);
        }
    }
    

    输出

    ["Mozilla/5.0"
    "("Macintosh;"
    "Intel"
    "Mac"
    "OS"
    "X"
    "10.8;"
    "rv:31.0")"
    "Gecko/20100101"
    "Firefox/31.0"]
    

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2011-01-08
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多