Java: split () возвращает [Ljava.lang.String; @ 186d4c1], почему? - PullRequest
3 голосов
/ 22 сентября 2011

И я понятия не имею, почему!

У меня есть STRING (да, а не массив), который имеет следующее содержимое:

[something, something else, somoething, trallala, something]

И я хочу превратить его в строку []. Итак, сначала я подставляю substring () первым и последним символом, чтобы избавиться от скобок []. Затем я использую функцию split (), чтобы разделить запятыми. Я пытался использовать оба "\ |" и "," и "\" с одинаковыми результатами.

Вот что я получаю:

[Ljava.lang.String;@186d4c1

Вот код для этого. Я сделал это в одну строку:

String[] urlArr = ((matcher.group(3).toString()).substring(1, (matcher.group(3).length()-1))).split(",");

Как видите, первая часть - это (matcher.group (3) .toString ()), и она возвращает верную строку (как пример, который я опубликовал выше). Так что я не понимаю, почему это не работает.

Есть идеи?

EDIT:

Я немного уточнил код:

String arrString = matcher.group(3).toString();
int length = arrString.length();
String[] urlArr = (arrString.substring(1, length-1)).split(",");
System.out.println(urlArr);

Ответы [ 3 ]

7 голосов
/ 22 сентября 2011

Выход

[Ljava.lang.String;@186d4c1

- это способ, которым java печатает строковый массив (или любой массив) по умолчанию (при преобразовании в строку). Вы можете использовать

Arrays.toString(urlArr)

, чтобы получить более читаемую версию.

5 голосов
/ 22 сентября 2011

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

System.out.println(Arrays.asList(urlArr));

Обновление

Если вы хотите обработать проанализированные токены один за другим, вы можете просто выполнить итерацию по массиву, например,

for (String url : urlArr) {
  // Do something with the URL, e.g. print it separately
  System.out.println("Found URL " + url);
}
2 голосов
/ 22 сентября 2011

Когда вы делаете toString в массиве, вы просто получаете внутреннее представление.Не так полезно.Попробуйте Arrays.toString(what comes back from split) для чего-то более читабельного.

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