Tengo una String :
String thestra = "/aaa/bbb/ccc/ddd/eee";Cada vez, en mi situación, para este Sting, un mínimo de dos barras estarán presentes sin falta.
Y obtengo el /aaa/ como a continuación, que es la subCadena entre "LAS DOS PRIMERAS apariciones" del carácter / en la Cadena.
System.out.println("/" + thestra.split("\\/")[1] + "/");Resuelve mi propósito, pero me pregunto si hay alguna otra alternativa elegante y más limpia para esto.
Tenga en cuenta que necesito ambas barras (iniciales y finales) alrededor de aaa . es decir /aaa/
Puede usar indexOf , que acepta un segundo argumento para que un índice comience a buscar desde:
int start = thestra.indexOf("/"); int end = thestra.indexOf("/", start + 1) + 1; System.out.println(thestra.substring(start, end)); Si es o no más elegante es una cuestión de opinión, pero al menos no encuentra cada / en la cadena ni crea una matriz innecesaria.
Se puede utilizar Scanner::findInLine devuelve la primera coincidencia del patrón:
String thestra = "/aaa/bbb/ccc/ddd/eee"; System.out.println(new Scanner(thestra).findInLine("/[^/]*/"));Producción:
/aaa/Use Pattern y Matcher de java.util.regex .
Pattern pattern = Pattern.compile("/.*?/"); Matcher matcher = pattern.matcher(str); if (matcher.find()) { String match = matcher.group(0); // output }