2017-08-13 39 views
-3

我收到下面的用户代理字符串无法解析用户代理字符串中的Java

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

我试图解析它作为一个字符串,并将其转换成字符串数组,但我无法阅读作为string.Is有没有更好的方式来阅读括在方用户代理数据牙套

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]); 

     } 

我有这样一个字符串列表,我不能复制粘贴每个字符串,并进行转义characters.I要寻找一个java中可以容纳上述数据的数据类型

+0

什么错误?你的预期产出是多少? – Ravi

+0

您必须转义用户代理字符串中的双引号 – Joe

+0

Java没有三重引号的字符串。 – khelwood

回答

0

从您现有的代码中,您似乎在寻找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" 
0

如果要分析所有的字符串。

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"]