2017-08-13 86 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"]