Извлечение нескольких подстрок из строки в JAVA / Android

#java #android #string #substring #extract

#java #Android #строка #подстрока #извлечение

Вопрос:

В моем приложении для Android у меня есть большая строка, содержащая источник моей веб-страницы. Эта веб-страница с использованием javascript поворачивает шесть прозрачных png-файлов поверх нескольких других png-файлов. Что я хочу сделать, это извлечь последние 4 символа имен файлов png, но ТОЛЬКО для первых 6 изображений, которые появляются в исходном коде. Эти последние 4 символа каждого имени файла png являются временной меткой, которая мне нужна, и я хочу преобразовать их в массив.

Источник:

 <html><head><style>html {background: black} body {background:black;margin:0;padding:0;}</style><script>setInterval('changeImage()',1000);function changeImage() {size = images.length;if (current == size-1) { current = -1;}current  ;document.getElementById('rad').src = images[current];    }current = 0;images = new Array();images[0] = 'image.201105261318.png';images[1] = 'image.201105261323.png';images[2] = 'image.201105261330.png';images[3] = 'image.201105261336.png';images[4] = 'image.201105261342.png';images[5] = 'image.201105261348.png';</script></head><body><img style="position:absolute; top: 0px; left: 0px;z-index:1;" src="http://background.png"></body></html>
  

Желаемый результат:

 String Array = "1318,1323,1330,1336,1342,1348"
  

Я перепробовал множество различных методов извлечения подстрок, но все еще испытываю трудности. Я знаю, как определить конец строки, используя «.png», но не уверен, как сказать, что мне нужны только 4 символа, предшествующие этому разделителю ..?

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

Приветствия

Грег

Редактировать:

Понял!

 int delimiter = source.indexOf(".png");
String imageTime1 = source.substring(delimiter-4,delimiter);
int delimiter2 = source.indexOf(".png",delimiter 4);
String imageTime2 = source.substring(delimiter2-4,delimiter2);
int delimiter3 = source.indexOf(".png",delimiter2 4);
String imageTime3 = source.substring(delimiter3-4,delimiter3);
int delimiter4 = source.indexOf(".png",delimiter3 4);
String imageTime4 = source.substring(delimiter4-4,delimiter4);
int delimiter5 = source.indexOf(".png",delimiter4 4);
String imageTime5 = source.substring(delimiter5-4,delimiter5);
int delimiter6 = source.indexOf(".png",delimiter5 4);
String imageTime6 = source.substring(delimiter6-4,delimiter6);
  

Приветствия

Ответ №1:

Возможно, я упускаю суть, но…

Учитывая, что индексом x является text.indexOf(«.png»), вы можете просто использовать text.substring(x-4,x); .

Затем вы можете сделать text.indexOf(".png",x 4) , чтобы получить конец вашего следующего изображения, и повторить вышеописанное.

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

Комментарии:

1. Просто любопытно, как «разделитель 4» перемещает его к следующему изображению в моей строке?

2.@Pelly: Это indexOf , которое начинается с x 4 . Таким образом, в строке выполняется поиск следующей ".png" .

Ответ №2:

Как только у вас будет список изображений, сделайте String.split(';') , чтобы получить список images[0] = 'image.201105261318.png' элементов. Затем вы можете получить длину каждого элемента и использовать String.substring(length-9,length-4) , чтобы получить последние 4 символа каждого элемента.

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