2013-07-08 1 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); 
    } 

그래서 내 전류 출력은 다음과 같이이다 : 나는 vCard를에서 문자열을 만드는이 방법이

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

그래서 같은 리소스를 만듭니다 (또는 코드'< BR/>'에 넣어) 같은' <문자열 이름 = "new_line"> < br/> '원하는대로 사용하십시오. 희망이 도움이됩니다. :) – g00dy

+0

들 빈 줄을 추가하는 방법을 알고, 실제로 항목 그룹 사이에 배치하는 방법을 (마지막 전화와 첫 번째 전자 메일 사이)에 도움이 필요합니다 –

+0

그런 다음'field = "Name :";'다음에 새 줄을 추가하십시오. 예를 들어,'FAX' 그룹과 같은 각 그룹에 대해 다음과 같은 공통'if' 문을 사용하십시오 : else if (i == FAX_HOME || i == FAX_WORK) { if (i == FAX_HOME) { field = "Fax (home) :"; } else if (i == FAX_WORK) { field = "Fax (work) :"; } field = field.concat ("귀하의 new_line 문자"); }'- 아이디어를 얻을 수 있습니다. 물론 하나의 FAX 번호 만 입력됩니다. vcard의 주문 또는 몇 개의 정보가 있는지 알고 계십니까? – g00dy

답변

0

문자열 배열을 반복하여 다음과 같이 나눌 수 있습니다. 다음 항목이 현재로 시작하는지 확인합니다. 그렇다면 현재 항목에 줄 바꿈을 추가하지 않고 배열에서 바꿀 수 있으면 아무 것도하지 않습니다.

참고 : with with splitting : 또한 모든 phone (xxx) 유형을 구분합니다. 이를 방지하기 위해 문자열이 "phone"으로 시작하는 경우 열거 형을 만들고 전화 유형을 Phone에 매핑 한 다음 배열을 반복하는 동안 해당 열거 형을 현재 유형으로 사용합니다. 현재 유형이 다음 유형과 다른 경우 줄 바꿈을 추가하십시오.

0

을 통해 줄 구분 기호를 추가 할 수 있습니다. System.getProperty ("line.separator");

+0

잘 알지만, 항목 그룹간에 어떻게 추가합니까? 마지막 항목 그룹 (전화, 이메일, 주소 등)을 어떻게 추적 할 수 있습니까?/n 거기에 넣을 것을 알고 있습니까? –

관련 문제