2015-09-11 4 views
0

У меня есть строка URL-адресов, пример "domain.com/url1, domain.com/url2 etc". Иногда они разделены запятой, вкладкой или трубкой. То, что я хотел бы сделать, это разделить их на массив строк и автоматически обрабатывать любой потенциальный прецедент. Кто-нибудь знает хороший способ справиться с этим?Создание массива строк из строки с разделителями.

Я начал с чего-то подобного, но он работает неправильно и не обрабатывает все варианты использования.

Collection<String> newUrls = Arrays.asList(photoHolder.getPhotoURLs().replaceAll("\\|", ",").replaceAll("\\s+", "").split(",")); 
+0

Что общего у ваших разделителей? Все ли они содержат пространство в конце? –

+0

В csv-файле есть поле с фотографией, и каждый файл csv может очень сильно отличаться от компании, производящей ее. Они присылают мне список фоторесурсов, мне просто нужно иметь возможность обрабатывать все варианты использования. Иногда есть места, иногда нет. –

ответ

3

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

Collection<String> newUrls = Arrays.asList(photoHolder.getPhotoURLs().split("\\t|\\||,")); 
+0

Удаляет ли это потенциальные пробелы? –

+0

@CodeJunkie Нет, не будет. Для этого вам нужно будет вызвать 'String # trim()' для каждого экземпляра строки. Или вы можете придумать более сложный REGEX, который будет соответствовать пробелу и считать его частью разделителя. –

+0

вы считаете, что это может быть лучшим решением? photoHolder.getPhotoURLs(). replaceAll ("\\ s +", "") .split ("\\ t | \\\\") –

0

Вы можете использовать некоторые «умные» регулярные выражения, которые не зависит от разделителя, но и использовать доменные имена (.com, .co.uk, IP-адрес ...), чтобы отделить URL.

0

Я думаю, что вы сделали несколько разделенных методов, чтобы покрыть все сценарии и, наконец, поместить их в один список. И в другом случае о потенциальном прецеденте использовать try catch и в catch catch исключение, потому что мы не можем обрабатывать каждый сценарий. Подумайте, это будет полезно как-то.

Uri uri = Uri.parse("domain.com/url1/what ever_the_url"); 
String protocol = uri.getScheme(); 
String server = uri.getAuthority(); 
String path = uri.getPath(); 
Set<String> args = uri.getQueryParameterNames(); 
String limit = uri.getQueryParameter("limit"); 

Попробуйте это также.

Смежные вопросы