Добавить пустую строку между группами элементов в строке

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

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
.
.
.

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам