Codigo não substitui as strings

O codigo que criei nao substitui as palavras que eu quero pelo espaço! O que está errado?

public static String isolaPalavrasChave(String frase) {
        
        String palavrasRetirar = " o - a - de - dos - das - sao - que - em - um - as - os - para - do - da - no - nas - nos - na - para -...-,- uma - umas ";
        String[] palavraschaveSeparadas = palavrasRetirar.split("-");
        for (int x =0; x<palavraschaveSeparadas.length;x++){
            System.out.println(palavraschaveSeparadas[x]);
            frase.replaceAll(palavraschaveSeparadas[x], " ");
        }    
        return frase;
   }

1 - cada string será composta por um espaço antes e outro depois: Por exemplo:

palavraschaveSeparadas[0] -> " o ". Então, não será trocado quando vogal de silaba, mas só quando aparecer como artigo, por exemplo. É isso mesmo que queres?

2 - O método replaceAll retorna uma String. Logo, deve fazer:

frase = frase.replace(palavrasChaveSeparadas[x], " ");

Exemplo:

import java.util.Scanner;

public class Teste {
	private String isolaPalavrasChave(String frase){
		String palavrasRetirar = " o - a - de - dos - das - são - " + 
			"que - em - um - as - os - para - do - da - no - nas - " + 
			"nos - na - para -...-,- uma - umas ";
		
		String[] palavrasChaveSeparadas = palavrasRetirar.split("-");
		
		for (int x = 0; x < palavrasChaveSeparadas.length; x++){
            System.out.println(palavrasChaveSeparadas[x]);
            frase = frase.replace(palavrasChaveSeparadas[x], " ");
        }    
		return frase;
	}
	
	public static void main(String[] args){
		Scanner leitor = new Scanner(System.in);
		Teste teste = new Teste();
		
		System.out.print("Digite a frase: ");
		String str = teste.isolaPalavrasChave(leitor.nextLine());
		
		System.out.println("\n" + str);
	}
}

Rodando…

2 curtidas