Este é um código de exemplo para uma simples validação de nome com sistema de formatação. Ele remove os espaços laterais da String
, a transforma em um array utilizando o método split(" ")
, e depois itera sobre esse array, juntando novamente cada elemento com a primeira letra em maiúscula (usando charAt(0)
) e o restante em minúsculas com substring
. Cada palavra é separada por um espaço " ", e no final, a String
formatada é retornada.
Código que fiz:
package com.github.rickmvi.challenge07;
import com.github.rickmvi.jtoolbox.console.Out;
import com.github.rickmvi.jtoolbox.console.utils.ScannerUtils;
import com.github.rickmvi.jtoolbox.control.While;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.atomic.AtomicReference;
public class ValidName {
public static void main(String[] args) {
ScannerUtils.init();
Out.print("Enter your name: ");
AtomicReference<String> name = new AtomicReference<>(ScannerUtils.nextLine());
if (name.get().isEmpty()) return;
While.whileTrue(
() -> name.get().length() < 3,
() -> {
Out.print("Your name is too short, please try again: ");
name.set(ScannerUtils.nextLine());
});
ScannerUtils.close();
Out.printFormatted("Your name is: {}", formatString(name.get()));
}
@Contract(pure = true)
private static @NotNull String formatString(String str) {
if (str == null || str.isEmpty()) return "";
String args1 = str.trim();
String[] args2 = args1.split(" ");
StringBuilder args3 = new StringBuilder();
for (String s : args2) {
if (s.isEmpty()) continue;
args3.append(Character.toUpperCase(s.charAt(0)))
.append(s.substring(1).toLowerCase().trim())
.append(" ");
}
return args3.toString().trim();
}
}
Imagem do código:
Sainda no console: