Выведите ArrayList в строку без появления [,] (скобки)
OK, поэтому у меня есть ArrayList, который мне нужно вернуть как строку. Прямо сейчас я использую этот подход:
List<Customer> customers = new ArrayList<>();
List<Account> accounts = new ArrayList<>();
public String customerList()
{
String list = Arrays.toString(customers.toArray());
return list;
}
public String accountList()
{
String account = Arrays.toString(accounts.toArray());
return account;
}
это прекрасно работает, но проблема в том, что я получаю скобки вокруг текста. Я получаю такие вещи, как:
Customer list:
--------------
[Name: Last, First
, Name: Last, First
, Name: Last, First
]
когда я хочу что-то вроде этого:
Customer list:
--------------
Name: Last, First
Name: Last, First
Name: Last, First
однако, в отличие от подобных вопросов, я не просто хочу выводить строку за строкой. Мне нужно сохранить ArrayList в строке без скобок, чтобы я мог работать с он.
EDIT: следует отметить, что одна запятая в версии, которую я хочу, чтобы она выглядела, была помещена туда методом в другом классе:
public final String getName()
{
return getLast() + ", " + getFirst();
}
EDIT 2: я смог найти полное решение, адаптировав два ответа, которые мне дали. Было трудно решить, какой из них" ответ", потому что я нашел оба варианта полезными, но выбрал тот, который мог использовать более избирательно.
public String customerList()
{
String list = Arrays.toString(customers.toArray()).replace(", N", "N").replace(", N", "N");
return list.substring(1,list.length()-1);
}
чтобы снять скобки, которые я использовал измененный возврат. Удаление запятой потребовало от меня сосредоточиться на том, что каждая строка будет начинаться с "N", но недостатком этого подхода является то, что код сломается, если я забуду изменить его здесь, Если я изменю его там. Тем не менее, это решает мою конкретную проблему, и я всегда могу записать себе в обоих местах по мере необходимости.
6 ответов
вы можете попытаться заменить " ["и"] " на пустое пространство
String list = Arrays.toString(customers.toArray()).replace("[", "").replace("]", "");
можно напрямую преобразовать list / set в string и выполнить действие над ним
customers.toString().replace("[", "").replace("]", "")
возможные решения:
String account = Arrays.toString(accounts.toArray());
return account.substring(1,account.length()-1);
или вы переопределяете toString
метод для возврата строки, как вы хотели.
Если вы хотите, чтобы ваш выходной, чтобы выглядеть: элемент1, место № 2, item3
Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').trim()
Если вы хотите, чтобы ваш выходной, чтобы выглядеть: место № 1 место № 2 item3
Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').replace(',', ' ').trim()
вы можете использовать метод substring() для удаления начальных и конечных скобок без изменения каких-либо записей в ArrayList.
Я использовал что-то вроде этого для преобразования ArrayList<String>
в строку
String str = list.toString().substring(1, list.toString().length() - 1);