Small Basic: Text Basics
This article covers the basics of text manipulation in Small Basic using the Text object.
Introduction
Text is a series of characters, often called a string in computing. A string can be a constant (or literal) enclosed within a set of double quotes, or a variable can be assigned to hold a string.
txt = "Hello World"
Above, txt is a variable that contains the string literal "Hello World".
As stated, the string contains a set or characters, in the example above there are 11 characters, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l' and 'd'.
A string can also be a series of numbers such as "3.14159", or even contain special characters like backspace, newline, '♥' or even a system beep. These are not to be confused with the different representations of the characters that different fonts can provide, including different language fonts like the symbol font.
Each character is identified internally by a 'character code' or number, often called ASCII or UNICODE number.
We often want to form one string from others or query a string to see what it contains.
Text methods
The following is a brief summary of the Small Basic Text object methods with some simple examples.
GetLength
Returns the number or characters in the input string.
txt = "Hello World"
TextWindow.WriteLine(txt+" contains "+Text.GetLength(txt)+" characters")
The empty string "" has a special meaning in Small Basic. It represents a variable that has not been set, and in fact an array or one of its elements is deleted by setting it to "". We cannot therefore have an array element that is the empty string "".
Append
Joins or concatenates two strings. We can also use + to join two strings in general. However, if the strings are actually numbers, then + would add them numerically rather than join the strings.
TextWindow.WriteLine("35"+"17")
TextWindow.WriteLine(Text.Append("35","17"))
Case Conversion
This is very straight forward, simply creates a copy of the input string converting the case.
This can be very useful for comparing the equivalence of strings in a case insenstive way. If we convert both to the same case (say lower) and test if they are equal then the case of the original things is effectively ignored.
TextWindow.WriteLine("Enter a name")
inputName = TextWindow.Read()
If (Text.ConvertToLowerCase(inputName) = "john") Then
TextWindow.WriteLine("Hello "+inputName)
EndIf
ConvertToLowerCase
Create a copy of the input string, with all characters converted to lower case.
ConvertToUpperCase
Create a copy of the input string, with all characters converted to upper (or capital) case.
Character Codes
Character codes can be useful to:
- Quickly check for certain ranges of characters, e.g. a capital letter.
- Add special characters like new line or backspace.
- Provide a unique numerical value for a character, perhaps for a code method.
For i = 0 To 127
TextWindow.CursorLeft = 0
TextWindow.Write(i)
TextWindow.CursorLeft = 4
TextWindow.WriteLine(Text.GetCharacter(i))
EndFor
TextWindow.WriteLine("Enter a phrase")
input = TextWindow.Read()
capitals = ""
For i = 1 To Text.GetLength(input)
char = Text.GetSubText(input,i,1)
charCode = Text.GetCharacterCode(char)
If (charCode >= 65 And charCode <= 90) Then
capitals = capitals+char
EndIf
EndFor
TextWindow.WriteLine("The capital letters in your input are")
TextWindow.WriteLine(capitals)
The special character codes for a carriage return (10) and line feed (13) can be useful. These terms relate to manual typewriters; they are sometimes used separately and sometimes combine to form a newline.
CR = Text.GetCharacter(10)
LF = Text.GetCharacter(13)
mlTextBox = Controls.AddMultiLineTextBox(0,0)
Controls.SetTextBoxText(mlTextBox,"Hello"+LF+"World")
GetCharacter
Get a character from an input character code.
GetCharacterCode
Get the character code for an input character.
Sub-text manipulation
The following commands manipulate sub-strings within larger strings.
EndsWith
Finds if a string ends with a set of characters, returns "True" or "False".
If (Text.EndsWith(fileName,".txt")) Then
'We have found a txt file
EndIf
Note that "True" and "False" are special strings in Small Basic that represent a true or false state and can be used directly in If or While statements.
'An infinite loop
While ("True")
Program.Delay(20)
EndWhile
StartsWith
Finds if a string starts with a set of characters, returns "True" or "False".
The final set of Text methods allow us to find and manipulate sub strings.
'A simple find and replace
txt = "This is my test text, it contains text that has 3 instances of the word text."
txtCopy = txt ' A working copy
find = "text" 'The text to find
replace = "TEXT" 'The text to replace with
result = "" 'The result of the find and replace
pos = Text.GetIndexOf(txtCopy,find) ' The next occurence of our search text
While (pos > 0)
result = result+Text.GetSubText(txtCopy,1,pos-1) 'The text before our search text
result = result+replace 'Add the replace text
txtCopy = Text.GetSubTextToEnd(txtCopy,pos+Text.GetLength(find)) 'The text after our search text
pos = Text.GetIndexOf(txtCopy,find) 'The next occurence of our next search text
EndWhile
result = result+txtCopy 'The final text after our search text (if any).
TextWindow.WriteLine(result)
GetIndexOf
Find the index (or character from the start) of the start of one string in another. This returns 0, if the string is not found.
GetSubText
This gets a sub text of the input string starting at a given index and extracting a defined number of characters.
GetSubTextToEnd
This gets a sub text of the input string starting at a given index and extracting all of the string from this point to the end.
IsSubText
The checks if a sub string is present anywhere within the input string, returns "True" or "False". This is similar to GetIndexOf returning a value > 0.
See Also
- [[articles:Small Basic: TextWindow]]
- [[articles:Wiki: Small Basic Portal]]