2013-04-01 280 views
1

我想按以下格式打印我的字符串。 ua, login, login ---> ua, navigation, fault Average = 500 milliseconds。我將這兩個字符串存儲到一個名爲keyString的字符串中,並將其放入由"|"分隔的hashmap中。然後我分裂,當我迭代鍵集來獲取它的格式,我原來的陳述,但它是這樣顯示---> ua, ctiq, export|ua, ctiq export, transfer Average = 600 milliseconds。有任何想法嗎?打印拆分字符串

public static void ProcessLines(Map<String, NumberHolder> uaCount,String firstLine, String secondLine) throws ParseException 
    { 
    String [] arr1 = firstLine.split("-- ", 2); 
    String [] arr2 = secondLine.split("-- ", 2); 
    String str1 = arr1[1]; 
    String str2 = arr2[1]; 


    ...... 
    String keyString = str1 + "|" + str2;    
    NumberHolder hashValue = uaCount.get(keyString); 
    if(hashValue == null) 
    { 
     hashValue = new NumberHolder(); 
     uaCount.put(keyString, hashValue);      
    } 
    hashValue.sumtime_in_milliseconds += diffMilliSeconds; 
    hashValue.occurences++; 

    public static class NumberHolder 
    { 
     public int occurences; 
     public int sumtime_in_milliseconds;  
    } 

和繼承人部分

for(String str : uaCount.keySet()) 
    { 
     String [] arr = str.split("|",2); 

     long average = uaCount.get(str).sumtime_in_milliseconds/uaCount.get(str).occurences; 

     //System.out.println(str); 

     System.out.println(arr[0] + " ---> " + arr[1] + " Average = " + average + " milliseconds"); 
    } 
+0

對不起,我沒有把代碼放在第一個請不要downvote – user2007843

+0

爲什麼這麼多downvotes? – Pshemo

+0

@Pshemo - 可能是因爲一開始沒有代碼。獲得的經驗:發佈您的問題與您的問題。 – LittleBobbyTables

回答

1

split使用正則表達式匹配的地方分割的打印,並在 「正則表達式」 |指OR。要使用|作爲文字,您需要使用\將其轉義,其中的字符串編寫爲"\\"。或者,您可以使用[|]。嘗試

str.split("\\|",2); 
+0

這個技巧謝謝你。所以故事的道德不要用'「|」'分割字符串? – user2007843

+0

@ user2007843沒有使用'|'作爲分隔符的缺點。你只需要知道在正則表達式中哪些字符是[元字符](http://www.regular-expressions.info/characters.html#special),這樣你就可以將它們與正則表達式匹配。 – Pshemo