2013-07-08 105 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 

我想要的是添加組(姓名/電話之間的換行符/電子郵件),所以我得到這樣的事情:

Name: Marko 

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

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

Addressblablabla 
. 
. 
. 

IMsblablabla 
. 
. 
. 

有人可以幫忙嗎? 謝謝。

+0

創建像這樣的資源(或把它放在代碼'< BR/>')像這樣:'<?XML版本= 「1.0」 編碼= 「UTF-8」> <字符串名稱= 「new_line」> < br/> '並使用它就像你想要的。希望能幫助到你。 :) – g00dy

+0

傢伙我知道如何添加一個空行,實際上我需要幫助如何將它放在項目組之間(在最後一個電話和第一封電子郵件之間) –

+0

然後在'field =「之後添加新行名稱:」;'for例如,在那之後,對於像「FAX」組這樣的每個組,使用如下那樣的普通的'if'語句:else if(i == FAX_HOME || i == FAX_WORK){if == FAX_HOME} {i = FAX_HOME} { field =「Fax(home):」; (i == FAX_WORK){ } field =「Fax(work):」; } field = field.concat(「Your new_line character」); 「 - 你會明白的。當然,只輸入一個傳真號碼,您知道vcard中的訂單或有多少信息? – g00dy

回答

0

您可以迭代字符串數組,然後按照下面的方式進行拆分:然後檢查下一個項是否以當前值開始。如果是這樣,則不做任何事情,如果它不是將換行符添加到當前項目並將其替換到數組中。

注意:splitting with:還會分隔所有電話(xxx)類型。爲了避免這種情況,如果字符串以「phone」開頭並且在遍歷數組時使用該枚舉作爲當前類型,則可以創建枚舉類型,映射類型爲Phone。如果當前類型與下一個類型不同,則添加換行符。

0

可以通過 追加行分隔符System.getProperty(「line.separator」);

+0

以及我知道,但我如何將它添加到組之間?我如何跟蹤哪一個是最後一組物品(電話,電子郵件,地址等),所以我知道把/ n放在那裏? –

相關問題