void main() {
   final var str = "Hello World";
   var newStr = str.replace('l', 'w'); // substitute characters
   IO.println (newStr);

   newStr = str.replace ("World", "Universe");
   IO.println (newStr);

   // NB.  String is immutable class.  StringBuilder is mutable class!

   newStr = str.replaceFirst("l", "w"); //
   IO.println (newStr);

   final var phoneNumber = "+1-(555)-123-4567";
   newStr = phoneNumber.replace("+", "")
      .replace("-", "")
      .replace("(", "")
      .replace(")", "");
   IO.println (newStr);
   // NB.  A different string is created and returned each time

   final String p1 = "[+()-]";  // either of '+', '-', '(', ')'
   newStr = phoneNumber.replaceAll (p1, "");
   IO.println (newStr);

   final String p2 = "\\D";     // anything not a digit
   newStr = phoneNumber.replaceAll (p2, "");
   IO.println (newStr);

   final String p3 = "([a-z])\\1";  // back reference
   newStr = str.replaceAll (p3, "$1");
   IO.println (newStr);
}