This shows you the differences between two versions of the page.
— |
harlowe:string [2017/10/09 20:39] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====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 <html><b></html>biiiiig<html></b></html> 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 [[harlowe:Array|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")| |