2016-01-11 3 views
3

Я работаю над проектом, в котором мой API возвращает url с id в конце его, и я хочу извлечь его для использования в другой функции. Вот пример URL:Как отрезать/вырезать строку в java символом?

String advertiserUrl = http://../../.../uuid/advertisers/4 <<< this is the ID i want to extract. 

В настоящее время я использую строку функцию в Java называется подстрока(), но это не самый лучший подход, поскольку идентификаторы могут стать 3-значным числом, и я бы только получить часть. Heres мой текущий подход:

String id = advertiserUrl.substring(advertiserUrl.length()-1,advertiserUrl.length()); 
System.out.println(id) //4 

Он работает в этом случае, но если идентификатор будет, например, «123» Я хотел бы только получить его как «3» после использования подстроки, поэтому мой вопрос: есть ли способ, чтобы сократить/trim, используя тире "/"? скажем, theres 5/в моем текущем URL-адресе, чтобы строка была отрезана после обнаружения пятой черты? Также был бы полезен и любой другой разумный подход. Благодарю.

Ps UUID в URL может изменяться по длине слишком

ответ

5

Для этого вам не нужно использовать регулярные выражения.

Использование String#lastIndexOf вместе с substring вместо:

String advertiserUrl = "http://../../.../uuid/advertisers/4";// <<< this is the ID i want to extract. 
// this implies your URLs always end with "/[some value of undefined length]". 
// Other formats might throw exception or yield unexpected results 
System.out.println(advertiserUrl.substring(advertiserUrl.lastIndexOf("/") + 1)); 

Выходной

4 

Update

Чтобы найти значение uuid, вы можете использовать регулярные выражения:

String advertiserUrl = "http://111.111.11.111:1111/api/ppppp/2f5d1a31-878a-438b-a03b-e9f51076074a/adver‌​tisers/9"; 
//       | preceded by "/" 
//       |  | any non-"/" character, reluctantly quantified 
//       |  |  | followed by "/advertisers" 
Pattern p = Pattern.compile("(?<=/)[^/]+?(?=/adver‌​tisers)"); 
Matcher m = p.matcher(advertiserUrl); 
if (m.find()) { 
    System.out.println(m.group()); 
} 

Выход

2f5d1a31-878a-438b-a03b-e9f51076074a

+0

Спасибо! Решила мою проблему – Tomas

+0

@ Томас, пожалуйста! – Mena

+0

Как насчет того, если я хочу извлечь uuid из этого же URL-адреса? Как я мог это достичь? @Mena – Tomas

1

Вы можете либо разделить строку на косой черты и занять последнюю позицию массива возвращается, или использовать LastIndexOf («/»), чтобы получить индекс последний косой чертой, а затем подстроить остальную часть строки.

+0

Спасибо, это помогло – Tomas

1

Используйте lastIndexOf() метод, который возвращает индекс последнего вхождения указанного символа.

String id = advertiserUrl.substring(advertiserUrl.lastIndexOf('/') + 1, advertiserUrl.length()); 
Смежные вопросы