Java - Получить подстроку из 2-го последнего вхождения символа в строке - PullRequest
0 голосов
/ 31 октября 2019

Мой ввод: "professions/medical/doctor/"

Мой желаемый вывод: "doctor"

У меня есть следующее решение, но оно не является однострочным:

String v = "professions/medical/doctor/";
String v1 = v.substring(0, v.length() - 1);
String v2 = v1.substring(v1.lastIndexOf("/")+1, v1.length());
System.out.println(v2);

Как я могу добиться того же в одной строке?

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Я бы, вероятно, использовал здесь String#split (требуя решения, состоящего из одной или двух строк):

String v = "professions/medical/doctor/";
String[] parts = v.split("/");
String v2 = parts[parts.length-1];
System.out.println(v2);

Если вы знаете, что вам нужен третий компонент, то вы можете просто использовать:

System.out.println(v.split("/")[2]);

Для настоящей однострочности String#replaceAll может работать:

String v = "professions/medical/doctor/";
String v2 = v.replaceAll(".*/([^/]+).*", "$1");
System.out.println(v2);
0 голосов
/ 31 октября 2019

Использование lastIndexOf(str, fromIndex) вариант:

String v2 = v.substring(v.lastIndexOf('/', v.length() - 2) + 1, v.length() - 1);
...