Não consigo eliminar parte de uma string em Java

Olá, estou criando um projeto com javaFx, mas infelizmente não consigo remover parte de uma string que está me dificultando as coisas. Ao criar uma Observable list para conseguir inserir em uma ListView parece que simplesmente não utilizei o replace.

Observação, esta é só a parte do código onde não encontro o erro. A saída está como se o replace não existisse.

public void initialize(URL arg0, ResourceBundle arg1) {
File searchInit = new File(".//Categorias");
searchInit.mkdir();

	File[] auxSearch = searchInit.listFiles(File::isDirectory);
	ArrayList<String> auxList = new ArrayList<String>();
	auxList.add("None");
	
	for (File DirName : auxSearch) {
		String removePath = DirName.getPath();
		removePath = removePath.replace(".//Categorias//", "");
		auxList.add(removePath);
	}
	
	obsList = FXCollections.observableArrayList(auxList);
	categories.setItems(obsList);
}

Imagem do ListView

Estranho. O replace aqui funcionou de boa. Deve ser outra coisa que está fazendo aparecer o valor errado na listview.

1 curtida

removePath.replaceAll(".*Categorias\\W(.*)", "$1");

Mesmo assim não funcionou. Mas queria te pedir para explicar o que significa este código, por favor.

Funcionou assim:

for (File DirName : auxSearch) {
String removePath = DirName.getPath();
auxList.add(removePath.replace("./Categories/", “”));
}

.* = tudo que vem antes de Categorias
\W = depois de Categorias não é letra nem número
(.*) = tudo que vem depois do \W sendo igual a $1
$1 = o que será substituído no replaceAll.
Se houvesse mais parenteses, teria $2, etc

É só uma regex comum.
https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html