Java Program to Capitalize the first character of each word in a String

Updated on November 25, 2024
Capitalize the first character of each word in a string header image

Introduction

In Java, manipulating strings is a common task often encountered in various programming scenarios, ranging from user input normalization to data processing for display purposes. One such manipulation is capitalizing the first letter of each word in a string, which is especially useful in formatting titles, names, or any text where proper nouns are involved.

In this article, you will learn how to capitalize the first character of each word in a string using Java. The approach involves practical coding examples to guide you through different methods of achieving this, including the use of built-in methods and manual manipulation of character arrays.

Using Built-in String Methods

Simple Loop and Character Methods

  1. Split the string into words.

  2. Capitalize the first letter of each word.

  3. Join the words back into a single string.

    java
    public class CapitalizeString {
        public static String capitalizeWords(String input) {
            String[] words = input.split("\\s+");
            StringBuilder sb = new StringBuilder();
            for (String word : words) {
                sb.append(Character.toUpperCase(word.charAt(0))).append(word.substring(1)).append(" ");
            }
            return sb.toString().trim();
        }
    
        public static void main(String[] args) {
            String text = "hello world";
            String capitalized = capitalizeWords(text);
            System.out.println(capitalized);
        }
    }
    

    This code snippet demonstrates a method where each word is split by spaces, and the first character of each word is converted to uppercase. The words are then combined into a single string.

Using StringBuffer for Efficiency

  1. Utilize the StringBuffer class for mutable strings.

  2. Iterate through the string's characters and capitalize after spaces.

    java
    public class CapitalizeStringBuffer {
        public static String capitalizeWords(String input) {
            StringBuffer result = new StringBuffer();
            char prevChar = ' '; // Start with a space to capitalize the first word
            for (char ch : input.toCharArray()) {
                if (prevChar == ' ') {
                    result.append(Character.toUpperCase(ch));
                } else {
                    result.append(ch);
                }
                prevChar = ch;
            }
            return result.toString();
        }
    
        public static void main(String[] args) {
            String text = "hello world again";
            String capitalized = capitalizeWords(text);
            System.out.println(capitalized);
        }
    }
    

    StringBuffer is used here for efficient string manipulation, especially useful when dealing with large strings. Each character is transformed based on its preceding character's condition.

Using Java 8 Features

Stream API and Lambda Expressions

  1. Utilize the Stream API to process each word.

  2. Apply a lambda function to capitalize the first letter.

    java
    import java.util.Arrays;
    import java.util.stream.Collectors;
    
    public class CapitalizeStream {
        public static String capitalizeWords(String input) {
            return Arrays.stream(input.split("\\s+"))
                    .map(word -> Character.toUpperCase(word.charAt(0)) + word.substring(1))
                    .collect(Collectors.joining(" "));
        }
    
        public static void main(String[] args) {
            String text = "welcome to the new world";
            String capitalized = capitalizeWords(text);
            System.out.println(capitalized);
        }
    }
    

    This example leverages Java 8's Stream API and lambda expressions to split the input string, capitalize the first letter of each word, and then join them back. This method is concise and leverages modern Java features for clean and effective string manipulation.

Conclusion

Capitalizing the first character of each word in a Java string can be accomplished using various methods, each suited to different needs and scenarios. By understanding and applying simple loops, StringBuffer, or the Stream API, you enhance the readability and presentation of text data in your Java applications. These methods provide powerful ways to process and format strings efficiently, ensuring that your Java applications can handle text manipulation tasks with ease and elegance.