d461c744cf05e04954aaa161ccff8d908246d2b3 kent Sun Aug 11 18:50:31 2019 -0700 Improving array range examples diff --git src/lib/strex.doc src/lib/strex.doc index 63e07e1..29dbd95 100644 --- src/lib/strex.doc +++ src/lib/strex.doc @@ -1,51 +1,52 @@ The strex language is a small string expression evaluation language. This document describes its built in functions and operators: + - returns the concatenation of the surrounding strings. Will convert a number to a string [ix] - selects a character from string given an integer zero based index. As in Python if ix is negative it selects characters from the end of the string. -1 corresponds to the last character of string, as 0 corresponds to first. between(prefix, string, suffix) - returns the part of string found between prefix and suffix example: between("abc", "01234abcHelloxyz56789", "xyz") fetches just "Hello" If there are multiple places the prefix occurs, it will choose the first one, and the then the first place the suffix matches after that. The biologist might think of it as a text oriented PCR, though the primer prefix and suffixes are not included in the output. The prefix "" corresponds to beginning of string and the suffix "" corresponds to end. Returns empty string if nothing found. split(string, index) - white space separated word from string of given 0 based index. Returns empty string if index is too large. separate(string, splitter, index) - separates string with splitter character. Returns string of given index. Returns empty string if index is too large. [start:end] - Use a colon in an array index to select a range of a string. This follows Python conventions, where start is zero based and end is one past the end of this string (or equivalently one based). If start is left out the start of the string is implied. If end is left out the end of the string is emplied. This leads to some curious but useful constructs such as these shown with an - example applied to the string "abcdefghij" - [:3] = "abc" - first three characters of string - [3:] = "efghij" - everything past the first three characters - [3] = "d" - the fourth character (the fun of zero based indexes - [3:5] = "de" - two characters starting with the fourth character up to the fifth - [-3] = "h" - the third character from the end - [3:-3] = "efg" - starts at fourth character ends three from the end - [-3:] = "hij" - last three characters of string + example applied to the string "0123456789" + [:3] = "012" - first three characters of string + [3:] = "3456789" - everything past the first three characters + [3:5] = "34" - two characters from the fourth up through the fifth + [5:3] = "" - you get an empty string if the start is bigger than the end + [3] = "3" - the fourth character (the fun of zero based indexes + [-3] = "7" - the third character from the end + [-3:] = "789" - last three characters of string + [:-3] = "0123456" - everything up to the last three Python actually goes further than this and allows a third, step, specification that - strex has not implemented at least not yet. + strex has not implemented. untsv(string, index) - separate by tab. Synonym for separate(string, '\t', index) uncsv(string, index) - do comma separated value extraction of string. Includes quote escaping. trim(string) - returns copy of string with leading and trailing spaces removed replace(string, old, new) - returns string with all instances of old replaced by new md5(string) - returns an MD5 sum digest/hash of string. Useful for creating IDs now() - returns current time and date in a really aweful unix ctime(2) format. We will improve it.