strings_slice_prog.mod 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. MODULE StringsSliceProg;
  2. (* Strings.Slice (Python-style) + Insert/Replace/Capitalize. Exit 255. *)
  3. IMPORT Strings;
  4. VAR ExitCode : INTEGER;
  5. VAR s, d : ARRAY [0 .. 31] OF CHAR;
  6. BEGIN
  7. ExitCode := 0;
  8. Strings.Assign("Hello, World", s);
  9. Strings.Slice(s, 0, 5, d); (* "Hello" *)
  10. IF Strings.Equal(d, "Hello") THEN ExitCode := ExitCode + 1 END;
  11. Strings.Slice(s, 7, 12, d); (* "World" *)
  12. IF Strings.Equal(d, "World") THEN ExitCode := ExitCode + 2 END;
  13. Strings.Slice(s, -5, 12, d); (* "World" (negative start) *)
  14. IF Strings.Equal(d, "World") THEN ExitCode := ExitCode + 4 END;
  15. Strings.Slice(s, 0, -8, d); (* "Hell" (negative stop: 12-8=4) *)
  16. IF Strings.Equal(d, "Hell") THEN ExitCode := ExitCode + 8 END;
  17. Strings.Slice(s, 3, 3, d); (* "" *)
  18. IF Strings.Equal(d, "") THEN ExitCode := ExitCode + 16 END;
  19. Strings.Assign("abc", d);
  20. Strings.Insert("XY", d, 1); (* "aXYbc" *)
  21. IF Strings.Equal(d, "aXYbc") THEN ExitCode := ExitCode + 32 END;
  22. Strings.Assign("hello", d);
  23. Strings.Replace("XYZ", d, 2); (* "heXYZ" *)
  24. IF Strings.Equal(d, "heXYZ") THEN ExitCode := ExitCode + 64 END;
  25. Strings.Assign("hELLO wORLD", d);
  26. Strings.Capitalize(d); (* "Hello world" *)
  27. IF Strings.Equal(d, "Hello world") THEN ExitCode := ExitCode + 128 END
  28. END StringsSliceProg.