Split and
join in most languages convert strings of text into arrays / lists / collections of other sorts. But in Tcl, all variables are held as strings, so are
split and
join actually needed?
If you're working with a collection of single words - no embedded spaces, no special characters, space delimited, then running
split and
join in Tcl will return you a string that's identical to the one you sent to them ... but if you do have special characters involved, it's another matter:
Dorothy-2:tcl grahamellis$ tclsh
% set places [list Calne Devizes Melksham Corsham Bradford-on-Avon]
Calne Devizes Melksham Corsham Bradford-on-Avon
% join $places
Calne Devizes Melksham Corsham Bradford-on-Avon
% split [join $places]
Calne Devizes Melksham Corsham Bradford-on-Avon
% Dorothy-2:tcl grahamellis$
but
Dorothy-2:tcl grahamellis$ tclsh
% set places [list "404, The Spa" {"Well House Manor"} Bristol]
{404, The Spa} {"Well House Manor"} Bristol
% join $places
404, The Spa "Well House Manor" Bristol
% split [join $places]
404, The Spa {"Well} House Manor\" Bristol
% Dorothy-2:tcl grahamellis$
Because they're so often 'null' in their effect,
you should test any code that uses lists very carefully, and with special characters too when you're working in Tcl.
I've added an example from this week's Tcl course
here, and there are further string manipulation examples
here and
here. A further example
here shows a case of handling a string as a list where you don't need to use split or join.
(written 2009-10-23 07:51:46)
Associated topics are indexed under
T205 - Tcl/Tk - String Handling in Tcl [1601] Replacing the last comma with an and - (2008-04-04)
[1410] Tcl / regsub - changing a string and using interesting bits - (2007-10-27)
[1403] Square Bracket protection in Tcl - (2007-10-23)
[943] Matching within multiline strings, and ignoring case in regular expressions - (2006-11-25)
[779] The fragility of pancakes - and better structures - (2006-06-26)
[404] How to check that a string contains a number in Tcl - (2005-08-06)
T206 - Tcl/Tk - Lists [2468] What are Tcl lists? - (2009-10-22)
[1405] Sorting in Tcl - lists and arrays - (2007-10-24)
[1402] Tcl - append v lappend v concat - (2007-10-23)
[1334] Stable sorting - Tcl, Perl and others - (2007-09-06)
[1283] Generating traffic for network testing - (2007-07-29)
[1282] Stringing together Tcl scripts - (2007-07-29)
[781] Tcl - lappend v concat - (2006-06-27)
[463] Splitting the difference - (2005-10-13)
[144] Tcl sandwich - lists in Tcl - (2004-12-08)
Some other Articles
Tcl - uplevel to run code at calling levelQuick easy and dangerous - automated logins via Tcl / ExpectUsing Tcl and Expect to automate repetitive jobsExploring Old Railwayssplit and join in tcl and expectA short form of if ... then ... elseWindows 7 and Open Source ProgrammingBeyond the PaleTcl - catching an error before your program crashes