Incluso para el código "simple", usaría bibliotecas. El problema no es el código per se, sino los casos de prueba ya existentes que cubren casos excepcionales. Esto podría ser null, cadenas vacías, cadenas en otros idiomas.
La parte de manipulación de palabras se ha eliminado de Apache Commons Lang. Ahora se coloca en el texto de Apache Commons . Consíguelo a través de https://search.maven.org/artifact/org.apache.commons/commons-text .
Puede usar WordUtils.capitalize (String str) de Apache Commons Text. Es más poderoso de lo que pediste. También puede capitalizar fulle (p. Ej., Fijación "oNe tousand only").
Como funciona en texto completo, uno tiene que decirle que capitalice solo la primera palabra.
WordUtils.capitalize("one thousand only", new char[0]);
Clase JUnit completa para permitir jugar con la funcionalidad:
package io.github.koppor;
import org.apache.commons.text.WordUtils;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class AppTest {
@Test
void test() {
assertEquals("One thousand only", WordUtils.capitalize("one thousand only", new char[0]));
}
}