User Tools

Site Tools


Sidebar

Passage markup

basics

coding

extra

list

section

whitespace

Macros

basics

colour

data structure

date and time

game state

live

maths

number

revision

saving

showing and hiding

string

styling

url

deprecated

Types of data

Special keywords

Special passage tags

harlowe:string

String data

A string is just a block of text - a bunch of text characters strung together.

When making a story, you'll mostly work with strings that you intend to insert into the passage source. If a string contains markup, then the markup will be processed when it's inserted. For instance, "The ''biiiiig'' bellyblob" will print as “The <b>biiiiig</b> bellyblob”. Even macro calls inside strings will be processed: printing "The (print:2*3) bears" will print “The 6 bears”. If you wish to avoid this, simply include the verbatim markup inside the string:"`It's (exactly: as planned)`" will print “It's (exactly: as planned)”.

You can add strings together to join them: "The" + ' former ' + "Prime Minister's" pushes the strings together, and evaluates to “The former Prime Minister's”. Notice that spaces had to be added between the words in order to produce a properly spaced final string. Also, notice that you can only add strings together. You can't subtract them, much less multiply or divide them.

Strings are similar to Array, in that their individual characters can be accessed: "ABC"'s 1st evaluates to “A”, "Gosh"'s 2ndlast evaluates to “s”, and "Exeunt"'s last evaluates to “t”. They, too, have a “length”: "Marathon"'s length is 8. If you don't know the exact position of a character, you can use an expression, in brackers, after it: $string's ($pos - 3). And, you can access a substring by providing an array of positions in place of a single position: "Dog"'s (a: 2,3) is “og”.

Also, you can use the contains and is in operators to see if a certain string is contained within another: "mother" contains "moth" is true, as is "a" is in "a". Again, like arrays, strings have special any and all data names which can be used with contains and is in to check all their characters - all of $string is not "w" is true if the string doesn't contain “w”, and $string contains any of "aeiou" is true if the string contains those five letters.

To summarise, here are the operations you can perform on strings.

Operator Meaning Example
+ Joining. “A” + “Z” (is “AZ”)
is Evaluates to boolean true if both sides are equal, otherwise false. $name is “Frederika”, any of “Buxom” is “x”
is not Evaluates to boolean true if both sides are not equal, otherwise false. $friends is not $enemies, all of “Gadsby” is not “e”
contains Evaluates to boolean true if the left side contains the right side, otherwise false. “Fear” contains “ear”
is in Checking if the right string contains the left string, otherwise false. “ugh” is in “Through”
's Obtaining the character or substring at the right numeric position. “YO”'s 1st (is “Y”), “PS”'s (2) (is “S”), “ear”'s (a: 2,3) (is “ar”)
of Obtaining the character at the left numeric position. 1st of “YO” (is “Y”), (2) of “PS” (is “S”), (a: 2,3) of “ear” (is “ar”)
harlowe/string.txt · Last modified: 2017/10/10 00:39 (external edit)