String Functions in Minitab

The standard library's `String` class provides many useful string-related methods. Here are some examples to give you a sense of the available functionality.

```java
import java.util.Arrays;

public class StringFunctions {
    // We create a static method for printing to simplify our examples
    private static void p(String prefix, Object obj) {
        System.out.println(prefix + obj);
    }

    public static void main(String[] args) {
        // Here's a sample of the methods available in the String class.
        // Since these are methods on the String object itself,
        // we call them directly on the string in question.
        // You can find more methods in the Java String API documentation.

        p("Contains:  ", "test".contains("es"));
        p("Count:     ", countOccurrences("test", 't'));
        p("StartsWith:", "test".startsWith("te"));
        p("EndsWith:  ", "test".endsWith("st"));
        p("IndexOf:   ", "test".indexOf("e"));
        p("Join:      ", String.join("-", "a", "b"));
        p("Repeat:    ", "a".repeat(5));
        p("Replace:   ", "foo".replace("o", "0"));
        p("ReplaceFirst:", "foo".replaceFirst("o", "0"));
        p("Split:     ", Arrays.toString("a-b-c-d-e".split("-")));
        p("ToLower:   ", "TEST".toLowerCase());
        p("ToUpper:   ", "test".toUpperCase());
    }

    // Java doesn't have a built-in count method, so we implement our own
    private static int countOccurrences(String str, char ch) {
        return (int) str.chars().filter(c -> c == ch).count();
    }
}

When you run this program, you’ll see:

$ javac StringFunctions.java
$ java StringFunctions
Contains:  true
Count:     2
StartsWith: true
EndsWith:  true
IndexOf:   1
Join:      a-b
Repeat:    aaaaa
Replace:   f00
ReplaceFirst: f0o
Split:     [a, b, c, d, e]
ToLower:   test
ToUpper:   TEST

This example demonstrates various string operations in Java. Note that while most operations are similar to their counterparts, there are some differences:

  1. Java uses methods on the String object instead of functions in a separate package.
  2. Some method names are slightly different (e.g., startsWith instead of HasPrefix).
  3. Java doesn’t have a built-in Count method, so we implemented our own.
  4. The Replace method in Java replaces all occurrences by default, while ReplaceFirst replaces only the first occurrence.

These examples give you a taste of Java’s string manipulation capabilities. For more detailed information, refer to the official Java String API documentation.