This is an old revision of the document!

Strings are enclosed in double quotes (“ ”) and are UTF-8 encoded. As with the stock 50g ROM, use of the →STR and STR→ are useful for converting other objects to strings and vice versa. Strings can be cancatenated by the plus (+) operator: “Hello ” “World!” + yields the string “Hello World!”.

Strings in newRPL are always Unicode NFC normalized for maximum compatibility with other devices. Strings imported from other devices should be NFC normalized for proper operation in newRPL. When the source device doesn't guarantee text in a normalized form, this can be done with the →NFC command.

### Length of strings

A Unicode Code Point is an indivisible unit of text. A character is usually a single Code Point, but not necessarily. A character may be formed by a group of Unicode Code Points that includes a starter character and optionally a series of overlapping characters or modifiers.

There are separate commands to measure the length of a string. The most useful is STRLEN, which returns the number of characters in a string. The command STRLENCP returns the number of Code Points in the string.

Finally, the command SIZE returns the size in bytes of the string.

### Commands for strings

The following table summarizes commands which can be applied to strings.

 Command Purpose Example →STR Convert object to string 45,569 →STR yields “45,569” STR→ Compile a string to RPL objects1) “45,569.” STR→ yields 45.569. →NFC Normalize a string to Unicode NFC “Hello World” →NFC yields “Hello World” UTF8→ Convert string to list of Unicode Code Points “abcd” UTF8→ yields { #61h #62h #63h #64h } →UTF8 Convert list of Unicode Code Points to a string { #61h #62h #63h #64h } →UTF8 yields “abcd” SIZE Return the number of bytes in a string “Hello World” SIZE yields 11 STRLEN Returns the length of the string, in characters “Hello World” STRLEN yields 11 STRLENCP Returns the mumber of Unicode Code Points in a string “Hello World” STRLEN yields 11 POS Returns the position of a substring within a string (0 if not found) “Hello World” “Wor” POS yields 7 POSREV Returns the position of the substring counting from end of sting (0 if not found) “Hello World” “Wor” POSREV yields 3 NPOS NPOSREV SREV Reverse the string “Hello World” SREV yields “dlroW olleH” REPL Replace part of a string with another at the specified position “Hello World” 7 “Universe” REPL yields “Hello Universe” SREPL Search and replace a string (return 1 if successful, 0 if not) “Hello World” “World” “Universe” SREPL yields “Hello Universe” 1 SUB HEAD TAIL TRIM RTRIM NTOKENS NTHTOKEN NTHTOKENPOS

1)
In this case, OBJ→ can also be used.
• manual/chapter3/strings.1505012518.txt.gz