2013-04-01 2 views
1

Я пытаюсь напечатать мою строку в следующем формате. ua, login, login ---> ua, navigation, fault Average = 500 milliseconds. Я сохраняю 2 строки в одну строку под названием keyString и помещаю ее в хэшмап, разделенный "|". Затем я разделяю это, когда я повторяю над набором ключей, чтобы получить его в формате, который я изначально указал, но он отображается примерно так: ---> 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

Извините, что я не поставил код вначале, пожалуйста, dont downvote – user2007843

+0

Почему так много downvotes? – Pshemo

+0

@Pshemo - возможно, потому, что сначала не было кода. Извлеченный урок: разместите свой код с вашим вопросом. – LittleBobbyTables

ответ

1

split использует регулярное выражение, чтобы соответствовать место для разделения, а в "RegEx" | означает OR. Чтобы использовать | в качестве литерала, вам необходимо скрыть его с помощью \, который в String написан как "\\". В качестве альтернативы вы можете использовать [|]. Попробуйте

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

, который сделал трюк спасибо. Итак, мораль этой истории не разбивает строку на '' | "'? – user2007843

+0

@ user2007843 нет никаких ограничений использования '|' в качестве разделителя. Вам просто нужно знать, какие символы являются [метасимволами] (http://www.regular-expressions.info/characters.html#special) в regex, чтобы вы могли сопоставлять их с регулярным выражением. – Pshemo

Смежные вопросы