Alguem consegue me ajudar a resolver esse problema?
Escreva um método que deve receber uma String (de tamanho máximo 100) e um caracter (que deve estar entre as 26 letras do alfabeto sendo válida a versão maiúscula ou minúscula) e retorne as substrings iniciadas e finalizadas com o caracter em questão existentes na String passada como parâmetro.
Olá! Posta aqui o código do que você ja fez? (mesmo que não funcione ainda)
não consegui pensar muito bem em como resolver, por isso pedi ajuda
Tente isso:
import java.util.ArrayList;
import java.util.List;
public class Preguica {
public static void main( String[] args ){
// A frase para analizar
String frase = "Um prato de trigo para tres tigres tristes.";
// a lista que vai receber todas as substrings que a função encontrar para imprimir
List<String> lista = getSubstrings(frase, 'r');
// se a lista estiver nula apenas para a execução
if( lista == null ) { return; }
// imprimindo a lista
lista.forEach(substring -> System.out.println("Substring : " + substring));
}
// Metodo que recebe string e char de parâmetro
private static List<String> getSubstrings( String stringentrada , char c ){
// cria uma lista vazia para guardar as substrings encontradas
List<String> listadesubstrings = new ArrayList<String>();
// transforma o char de entrada em uma string
String caracter = String.valueOf(c);
// lista de caracteres válidos para a busca
String validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
// teste sobre caracteres válidos, se o caracter for inválido para a execução e imprime msg de erro
if( !validChars.contains(caracter) ) {
System.out.println("'" + caracter + "' não é um caracter válido.");
return null;
}
// teste se string esta dentro do tamanho maximo de 100 caracteres permitidos
if( stringentrada.length() > 100 ) {
System.out.println("Sua string tem mais de 100 caracteres, o maximo é 100.");
return null;
}
// replace no caracter de filtro para realizar o split e manter o char na string
stringentrada = stringentrada.replaceAll(caracter, "_" + caracter + "_");
// split para dividir a string em partes limitadas pelo char de entrada
String[] splited = stringentrada.split(caracter);
for ( String v : splited ) {
// devolvendo o char à string cortada
String saida = v.replaceAll("_", caracter);
// teste pra ver se a substring começa e termina com o char passado como parametro
if( saida.substring(0, 1).equalsIgnoreCase(caracter) && saida.substring(saida.length() - 1, saida.length()).equalsIgnoreCase(caracter) ) {
// se a substring começa e termina com o char adiciona ela na lista para ser retornada
listadesubstrings.add(saida);
}
}
return listadesubstrings;
}
}
Saida no console:
Substring : rato de tr
Substring : rigo par
Substring : ra tr
Substring : res tigr
Substring : res tr
1 curtida