Tcl Tutorial Lesson 19

Modifying Strings - tolower, toupper, trim, format

These are the commands which modify a string. Note that none of these modify the string in place. In all cases a new string is returned.

string tolower str
Returns str with all the letters converted from upper to lower case.
string toupper str
Returns string with all the letters converted from lower to upper case.
string trim str ?trimChars?
Returns string with all occurrences of trimChars removed from both ends. By default trimChars are whitespace (spaces, tabs, newlines). Note that the characters are not treated as a "block" of characters - string trim "davidw" dw would return the string avi and not davi.
string trimleft str ?trimChars?
Returns string with all occurrences of trimChars removed from the left. By default trimChars are whitespace (spaces, tabs, newlines)
string trimright str ?trimChars?
Returns string with all occurrences of trimChars removed from the right. By default trimChars are whitespace (spaces, tabs, newlines)
format formatString ?arg1 arg2 ... argN?
Returns a string formatted in the same manner as the ANSI sprintf procedure. formatString is a description of the formatting to use. The full definition of this protocol is in the format man page. A useful subset of the definition is that formatString consists of literal words, backslash sequences, and % fields. The % fields are strings which start with a % and end with one of:
CodeExplanation
sData is a string
dData is a decimal integer
xData is a hexadecimal integer
oData is an octal integer
fData is a floating point number
The % may be followed by:
-Left justify the data in this field
+Right justify the data in this field

The justification value may be followed by a number giving the minimum number of spaces to use for the data.


Example

set upper "THIS IS A STRING IN UPPER CASE LETTERS"
set lower "this is a string in lower case letters"
set trailer "This string has trailing dots ...."
set leader "....This string has leading dots"
set both  "((this string is nested in parens )))"

puts "tolower converts this: $upper"
puts "              to this: [string tolower $upper]\n"
puts "toupper converts this: $lower"
puts "              to this: [string toupper $lower]\n"
puts "trimright converts this: $trailer"
puts "                to this: [string trimright $trailer .]\n"
puts "trimleft converts this: $leader"
puts "               to this: [string trimleft $leader .]\n"
puts "trim converts this: $both"
puts "           to this: [string trim $both "()"]\n"

set labels [format "%-20s %+10s " "Item" "Cost"]
set price1 [format "%-20s %10d Cents Each" "Tomatoes" "30"]
set price2 [format "%-20s %10d Cents Each" "Peppers" "20"]
set price3 [format "%-20s %10d Cents Each" "Onions" "10"]
set price4 [format "%-20s %10.2f per Lb." "Steak" "3.59997"]

puts "\nExample of format:\n"
puts "$labels"
puts "$price1"
puts "$price2"
puts "$price3"
puts "$price4"

  Resulting output
tolower converts this: THIS IS A STRING IN UPPER CASE LETTERS
              to this: this is a string in upper case letters

toupper converts this: this is a string in lower case letters
              to this: THIS IS A STRING IN LOWER CASE LETTERS

trimright converts this: This string has trailing dots ....
                to this: This string has trailing dots

trimleft converts this: ....This string has leading dots
               to this: This string has leading dots

trim converts this: ((this string is nested in parens )))
           to this: this string is nested in parens


Example of format:

Item                       Cost
Tomatoes                     30 Cents Each
Peppers                      20 Cents Each
Onions                       10 Cents Each
Steak                      3.60 per Lb.