2013-07-08 3 views
0

Я знаю, что это, наверное, один из самых тупых вопросов, но мой мозг кажется выключенным. У меня есть этот метод, который делает строку из визитной карточки:добавить пустую строку между группой элементов в строке

public static String process(String vCard) { 
     ArrayList<ArrayList<String>> vCardData = parseData(vCard); 
     if (vCardData != null) { 
      StringBuilder readableVCard = new StringBuilder(); 

      for (int i = 0; i < FIELD_COUNT; i++) { 
       ArrayList<String> vCardDataField = vCardData.get(i); 

       if (vCardDataField.size() > 0) { 
        String field = null; 

        if (i == FORMATTED_NAME) { 
         field = "Name: "; 
        } else if (i == PHONE_MOBILE) { 
         field = "Phone (mobile): "; 
        } else if (i == PHONE_HOME) { 
         field = "Phone (home): "; 
        } else if (i == PHONE_WORK) { 
         field = "Phone (work): "; 
        } else if (i == PHONE) { 
         field = "Phone: "; 
        } else if (i == FAX_HOME) { 
         field = "Fax (home): "; 
        } else if (i == FAX_WORK) { 
         field = "Fax (work): "; 
        } else if (i == PAGER) { 
         field = "Pager: "; 
        } else if (i == EMAIL_HOME) { 
         field = "Email (home): "; 
        } else if (i == EMAIL_WORK) { 
         field = "Email (work): "; 
        } else if (i == EMAIL) { 
         field = "Email: "; 
        } else if (i == ORGANISATION) { 
         field = "Company: "; 
        } else if (i == JOB_TITLE) { 
         field = "Job title: "; 
        } else if (i == ADDRESS_HOME) { 
         field = "Address (home): "; 
        } else if (i == ADDRESS_WORK) { 
         field = "Address (work): "; 
        } else if (i == ADDRESS) { 
         field = "Address: "; 
        } else if (i == IM_SKYPE) { 
         field = "Skype: "; 
        } else if (i == IM_GOOGLE) { 
         field = "Google Talk: "; 
        } else if (i == IM_JABBER) { 
         field = "Jabber: "; 
        } else if (i == IM_YAHOO) { 
         field = "Yahoo: "; 
        } else if (i == IM_MSN) { 
         field = "MSN: "; 
        } else if (i == IM_ICQ) { 
         field = "ICQ: "; 
        } else if (i == IM_AIM) { 
         field = "AIM: "; 
        } else if (i == TWITTER) { 
         field = "Twitter: "; 
        } else if (i == BIRTHDAY) { 
         field = "Birthday: "; 
        } else if (i == ANNIVERSARY) { 
         field = "Anniversary: "; 
        } else if (i == NOTES) { 
         field = "Notes: "; 
        } else if (i == WEBSITE) { 
         field = "Website: "; 
        } else { 
         continue; 
        } 

        if (readableVCard.length() != 0) { 
         readableVCard.append("\n"); 
        } 
        readableVCard.append(field); 

        for (int j = 0; j < vCardDataField.size(); j++) { 
         if (j != 0) { 
          readableVCard.append("; "); 
         } 
         readableVCard.append(vCardDataField.get(j)); 
        } 
       } 
      } 

      if (readableVCard.length() != 0) { 
       String textVCard = readableVCard.toString(); 
       try { 
        textVCard = qpDecoder.decode(readableVCard.toString()); 
       } catch (Exception e) { 
        Logger.e("VCard to UTF-8", e.getMessage()); 
       } 

       return (textVCard); 
      } 
     } 

     return (null); 
    } 

Так что мой выходной ток, как это:

Name: Marko 
Phone(mobile):1312 
Phone(fax):441231 
Phone(home):543534 
Email(home):dddd 
Email(work):eeee 
Email(other):aaaa 

То, что я хочу, чтобы добавить разрыв строки между группами (имя/телефон/email), поэтому я получаю примерно следующее:

Name: Marko 

Phone(mobile):1312 
Phone(fax):441231 
Phone(home):543534 

Email(home):dddd 
Email(work):eeee 
Email(other):aaaa 

Addressblablabla 
. 
. 
. 

IMsblablabla 
. 
. 
. 

Может кто-нибудь помочь, пожалуйста? Спасибо.

+0

Создать ресурс как так (или положить его в код '< бр/>') как так: ' <строка имя = «new_line»> < br/> 'и использовать его так, как вы хотите. Надеюсь, поможет. :) – g00dy

+0

Ребята, я знаю, как добавить пустую строку, мне действительно нужна помощь, как поместить ее между группами элементов (между последним телефоном и первым адресом электронной почты) –

+0

Затем добавьте новую строку после 'field =" Name: ";' for например, после этого для каждой группы, такой как группа 'ФАКС', используйте общий оператор' if', такой как: 'else if (i == FAX_HOME || i == FAX_WORK) { if (i == FAX_HOME) { field = "Fax (home):"; } else if (i == FAX_WORK) { Поле = "Факс (работа):"; } field = field.concat ("Ваш символ новой строки"); } '- вы получите идею. Это, конечно, вводится только один номер FAX, знаете ли вы порядок в vcard или сколько информации там? – g00dy

ответ

0

Вы можете выполнить итерацию массива строк, разделяя на: и затем проверяя, начинается ли следующий элемент с текущего. Если это так, то ничего не делать, если вы не добавляете разрыв строки к текущему элементу и заменяете его в массиве.

Примечание: разделение на: также разделяет все типы телефона (xxx). Чтобы этого избежать, вы можете создать тип перечисления, тип карты на «Телефон», если строка начинается с «телефона» и использовать этот перечисление как текущий тип, итерации по массиву. Если текущий тип отличается от следующего типа, вы добавляете разрыв строки.

0

Вы можете добавить разделитель строк через System.getProperty («line.separator»);

+0

ну, я знаю это, но как мне добавить его между группой предметов? Как я могу отслеживать, какая была последняя группа элементов (телефон, адрес электронной почты, адрес и т. Д.), Поэтому я знаю, что нужно положить/n? –