Какой лучший способ преобразовать эту строку в массив строк? - PullRequest
1 голос
/ 30 января 2020

Я реализую игровой сервер и представляю игровую доску в виде строки. Возьмем для примера это состояние:

String b = ", a36, a32, a26, a40, a295, a41, a49, /, , a16, a09, a68, a11, a99, ,"

Я хочу преобразовать эту строку в следующую строковый массив:

[, a36, a32, a26, a40, a295, a41, a49, , , , a16, a09, a68, a11, a99, ]

Я пытался использовать String.split:

String[] bArray = b.split("/|,");

Это дает:

boardArray = [, a36, a32, a26, a40, a295, a41, a49, , , , a16, a09, a68, a11, a99]

Он обрезает последний элемент " " в массиве, который я хочу. После изменения моего кода и добавления последнего элемента вручную:

String[] bArray = b.split("/|,");
bArray = Arrays.copyOf(bArray, bArray.length + 1);
bArray[bArray.length - 1] = "";

Это дает мне правильный результат, но это решение неэффективно. У кого-нибудь есть идеи, как сделать это более аккуратно?

Ответы [ 3 ]

4 голосов
/ 30 января 2020

Попробуйте:

b.split("/|,", -1);

это разделено с параметром предела (второй) и как документация говорит:

Элемент управления параметром предела количество применений шаблона и, следовательно, влияет на длину результирующего массива. Если предел n больше нуля, то шаблон будет применен не более n - 1 раз, длина массива будет не больше n, и последняя запись массива будет содержать все входные данные за пределами последнего сопоставленного разделителя. Если n не является положительным, то шаблон будет применяться столько раз, сколько возможно, и массив может иметь любую длину. Если n равно нулю, шаблон будет применяться столько раз, сколько возможно, массив может иметь любую длину, а завершающие пустые строки будут отбрасываться.

1 голос
/ 30 января 2020

Попробуйте загрузить в List<String> и перебрать этот список.

String b = ", a36, a32, a26, a40, a295, a41, a49, /, , a16, a09, a68, a11, a99, ,";
List<String> myList = Arrays.asList(b.split(","));
System.out.println(myList);

Выход:

[,  a36,  a32,  a26,  a40,  a295,  a41,  a49,  /,  ,  a16,  a09,  a68,  a11,  a99,  ]
0 голосов
/ 30 января 2020

Как указано в предыдущем вопросе java имеет такое поведение по умолчанию.

Иногда вам приходится реализовывать новые функции, но, вероятно, это не чистое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...