A user submits a search query: " PIZZA ". Before searching, you need to clean it up (trim spaces), normalize it (lowercase), then search your database. String operations make this possible.

Change case (normalize input)

Convert text to uppercase or lowercase for consistent comparisons.

Case.java
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}
public class Case {
    public static void main(String[] args) {
        String input = ;
        
        String upper = input.toUpperCase();
        String lower = input.toLowerCase();
        
        System.out.println("Original: " + input);
        System.out.println("Upper:    " + upper);
        System.out.println("Lower:    " + lower);
        
        // Practical: case-insensitive comparison
        String userAnswer = ;
        if (userAnswer.toLowerCase().equals("yes")) {
            System.out.println("User agreed (any case)");
        }
    }
}

Normalize input before comparing - users might type "YES", "Yes", or "yes".

toUpperCase Convert to uppercase: `"Hello".toUpperCase()` → `"HELLO"`

Trim whitespace (clean input)

Remove extra spaces from the beginning and end of user input.

Trim.java
public class Trim {
    public static void main(String[] args) {
        String messyInput = "   Alice Smith   ";
        String clean = messyInput.trim();
        
        System.out.println("With spaces: '" + messyInput + "'");
        System.out.println("Trimmed:     '" + clean + "'");
        System.out.println("Length before: " + messyInput.length());
        System.out.println("Length after:  " + clean.length());
        
        // strip() is like trim() but handles Unicode whitespace
        String tabbed = ;
        System.out.println("Strip: '" + tabbed.strip() + "'");
    }
}
public class Trim {
    public static void main(String[] args) {
        String messyInput = "   Alice Smith   ";
        String clean = messyInput.trim();
        
        System.out.println("With spaces: '" + messyInput + "'");
        System.out.println("Trimmed:     '" + clean + "'");
        System.out.println("Length before: " + messyInput.length());
        System.out.println("Length after:  " + clean.length());
        
        // strip() is like trim() but handles Unicode whitespace
        String tabbed = ;
        System.out.println("Strip: '" + tabbed.strip() + "'");
    }
}

Users often accidentally add spaces. Always trim input before processing.

trim Remove leading/trailing whitespace: `" hi ".trim()` → `"hi"`

Find substring (search in text)

Check if a string contains another string, and where.

Find.java
public class Find {
    public static void main(String[] args) {
        String text = ;
        
        // Find first occurrence
        int pos = text.indexOf("Hello");
        System.out.println("'Hello' first found at: " + pos);
        
        // Find from a position
        int secondPos = text.indexOf("Hello", pos + 1);
        System.out.println("'Hello' second found at: " + secondPos);
        
        // Check if not found
        int notFound = text.indexOf("Python");
        System.out.println("'Python' found at: " + notFound);  // -1
        
        // contains() is simpler for yes/no
        System.out.println("Contains 'World'? " + text.contains("World"));
        System.out.println("Contains 'Python'? " + text.contains("Python"));
    }
}
public class Find {
    public static void main(String[] args) {
        String text = ;
        
        // Find first occurrence
        int pos = text.indexOf("Hello");
        System.out.println("'Hello' first found at: " + pos);
        
        // Find from a position
        int secondPos = text.indexOf("Hello", pos + 1);
        System.out.println("'Hello' second found at: " + secondPos);
        
        // Check if not found
        int notFound = text.indexOf("Python");
        System.out.println("'Python' found at: " + notFound);  // -1
        
        // contains() is simpler for yes/no
        System.out.println("Contains 'World'? " + text.contains("World"));
        System.out.println("Contains 'Python'? " + text.contains("Python"));
    }
}

indexOf returns the position, or -1 if not found. contains is simpler for yes/no.

indexOf Find position: `"Hello".indexOf("l")` → `2`, returns `-1` if not found

Replace text

Substitute parts of a string with something else.

Replace.java
public class Replace {
    public static void main(String[] args) {
        String original = "Hello World";
        
        // Replace all occurrences
        String replaced = original.replace("l", "L");
        System.out.println("Replace l→L: " + replaced);
        
        // Replace substring
        String newWorld = original.replace("World", "Java");
        System.out.println("Replace World→Java: " + newWorld);
        
        // Original unchanged (strings are immutable)
        System.out.println("Original still: " + original);
        
        // Practical: censor words
        String message = ;
        String censored = message.replace("bad", "***");
        System.out.println("Censored: " + censored);
    }
}
public class Replace {
    public static void main(String[] args) {
        String original = "Hello World";
        
        // Replace all occurrences
        String replaced = original.replace("l", "L");
        System.out.println("Replace l→L: " + replaced);
        
        // Replace substring
        String newWorld = original.replace("World", "Java");
        System.out.println("Replace World→Java: " + newWorld);
        
        // Original unchanged (strings are immutable)
        System.out.println("Original still: " + original);
        
        // Practical: censor words
        String message = ;
        String censored = message.replace("bad", "***");
        System.out.println("Censored: " + censored);
    }
}

replace creates a new string - the original is unchanged (strings are immutable).

replace Substitute text: `"Hello".replace("l", "L")` → `"HeLLo"`

Split string (parse CSV)

Break a string into parts using a delimiter.

Split.java
public class Split {
    public static void main(String[] args) {
        // Split CSV line
        String csvLine = ;
        String[] parts = csvLine.split(",");
        
        System.out.println("CSV: " + csvLine);
        System.out.println("Name: " + parts[0]);
        System.out.println("Age: " + parts[1]);
        System.out.println("Job: " + parts[2]);
        
        // Split by multiple spaces
        String sentence = "Hello   World   Java";
        String[] words = sentence.split("\\s+");
        System.out.println("Words: " + words.length);
        for (String word : words) {
            System.out.println("  - " + word);
        }
        
    }
}
public class Split {
    public static void main(String[] args) {
        // Split CSV line
        String csvLine = ;
        String[] parts = csvLine.split(",");
        
        System.out.println("CSV: " + csvLine);
        System.out.println("Name: " + parts[0]);
        System.out.println("Age: " + parts[1]);
        System.out.println("Job: " + parts[2]);
        
        // Split by multiple spaces
        String sentence = "Hello   World   Java";
        String[] words = sentence.split("\\s+");
        System.out.println("Words: " + words.length);
        for (String word : words) {
            System.out.println("  - " + word);
        }
        
    }
}

Splitting is essential for parsing structured data like CSV files.

split Break apart: `"a,b,c".split(",")` → `["a", "b", "c"]`

Exercise: MoreOps.java

Explore more operations: substring, contains, startsWith, endsWith