Распечатать массив без скобок и запятых - PullRequest
37 голосов
/ 08 декабря 2010

Я портирую игру Hangman на Android и столкнулся с несколькими проблемами.В оригинальной Java-программе использовалась консоль, поэтому теперь мне нужно каким-то образом украсить вывод, чтобы он соответствовал моему макету Android.

Как напечатать массив без скобок и запятых?Массив содержит косые черты и заменяется один за другим, когда угадывается правильная буква.

Я использую обычную функцию .toString() класса ArrayList, и мой вывод форматируется как: [ a, n, d, r, o, i, d ],Я хочу, чтобы он просто распечатывал массив как один String.

Я заполняю массив, используя этот бит кода:

List<String> publicArray = new ArrayList<>();

for (int i = 0; i < secretWordLength; i++) {
    hiddenArray.add(secretWord.substring(i, i + 1));
    publicArray.add("-");
}

И я печатаю его так:

TextView currentWordView = (TextView) findViewById(R.id.CurrentWord);
currentWordView.setText(publicArray.toString());

Буду признателен за любую помощь.

Ответы [ 10 ]

93 голосов
/ 08 декабря 2010

Замените скобки и запятые пустым пробелом.

String formattedString = myArrayList.toString()
    .replace(",", "")  //remove the commas
    .replace("[", "")  //remove the right bracket
    .replace("]", "")  //remove the left bracket
    .trim();           //remove trailing spaces from partially initialized arrays
50 голосов
/ 08 декабря 2010

По сути, не используйте ArrayList.toString() - создайте строку для себя. Например:

StringBuilder builder = new StringBuilder();
for (String value : publicArray) {
    builder.append(value);
}
String text = builder.toString();

(Лично я, кстати, не назвал бы переменную publicArray, когда она на самом деле не является массивом.)

19 голосов
/ 23 мая 2013

Вы можете использовать метод присоединения из android.text.TextUtils класс как:

TextUtils.join("",array);
14 голосов
/ 08 декабря 2010

первый

StringUtils.join(array, "");

второй

Arrays.asList(arr).toString().substring(1).replaceFirst("]", "").replace(", ", "")

РЕДАКТИРОВАТЬ

вероятно, лучший: Arrays.toString(arr)

6 голосов
/ 18 июля 2018

В Java 8 или новее вы можете использовать String.join, который обеспечивает те же функции:

Возвращает новую строку, состоящую из копий элементов CharSequence, объединенных вместе с копией указанногоdelimiter

String[] array = new String[] { "a", "n", "d", "r", "o", "i", "d" };
String joined = String.join("", array); //returns "android"

Для массива другого типа его следует преобразовать в массив String или в последовательность символов. Итерируемый:

int[] numbers = { 1, 2, 3, 4, 5, 6, 7 };

//both of the following return "1234567"
String joinedNumbers = String.join("",
        Arrays.stream(numbers).mapToObj(String::valueOf).toArray(n -> new String[n]));
String joinedNumbers2 = String.join("",
        Arrays.stream(numbers).mapToObj(String::valueOf).collect(Collectors.toList()));

Первый аргумент String.join является разделителем и может быть изменен соответствующим образом.

4 голосов
/ 16 января 2018

Если вы используете Java8 или выше, вы можете использовать с stream () с native.

publicArray.stream()
        .map(Object::toString)
        .collect(Collectors.joining(" "));

Ссылки

4 голосов
/ 17 сентября 2012

самое простое решение для удаления скобок,

1. преобразовать массив в строку с помощью метода .toString ().

2.use String.substring (1, strLen-1). (Где strLen - длина строки после преобразования из массива).

3.Hurraaah .. Строка результата - это ваша строка с удаленными скобками.

надеюсь, что это полезно ...: -)

1 голос
/ 16 сентября 2011

Я использовал функцию join (), например:

i=new Array("Hi", "Hello", "Cheers", "Greetings");
i=i.join("");

Какие отпечатки:
HiHelloCheersGreetings


Подробнее: Присоединение к Javascript - Использовать Присоединиться кСделать массив в строку в Javascript

0 голосов
/ 26 октября 2018

я использовал Arrays.toString (array_name) .replace ("[", ""). Replace ("]", ""). Replace (",", ""); как я видел из некоторых комментариев выше, но также я добавил дополнительный символ пробела после запятой (часть .replace (",", "") ), потому что, пока я печатал каждое значение в новой строке, все еще был пробел , сдвигающий слова. Это решило мою проблему.

0 голосов
/ 18 октября 2017

Просто инициализируйте String объект с вашим массивом

String s=new String(array);
...