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)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
T206 - Tcl/Tk - Lists [144] Tcl sandwich - lists in Tcl - (2004-12-08)
[463] Splitting the difference - (2005-10-13)
[781] Tcl - lappend v concat - (2006-06-27)
[1282] Stringing together Tcl scripts - (2007-07-29)
[1283] Generating traffic for network testing - (2007-07-29)
[1334] Stable sorting - Tcl, Perl and others - (2007-09-06)
[1402] Tcl - append v lappend v concat - (2007-10-23)
[1405] Sorting in Tcl - lists and arrays - (2007-10-24)
[1601] Replacing the last comma with an and - (2008-04-04)
[2468] What are Tcl lists? - (2009-10-22)
[3285] Extracting data from a string / line from file - Tcl - (2011-05-10)
[3394] The difference between lists and strings - Tcl - (2011-08-16)
[3415] User defined sorting and other uses of callbacks in Tcl and Tk - (2011-09-02)
[3582] Tcl collections - lists, dicts and array - (2012-01-16)
[3583] Expanding a list of parameters in Tcl - {*} and eval - (2012-01-17)
[3618] lists and struct::list in Tcl - Introduction to struct::list and examples - (2012-02-18)
[4209] Lists in Tcl - fundamentals in a commented source code example - (2013-11-16)
[4454] Everything is a string - even a list - (2015-03-11)
[4455] Working out distance between places, using OS grid references and a program in Tcl - (2015-03-11)
T205 - Tcl/Tk - String Handling in Tcl [404] How to check that a string contains a number in Tcl - (2005-08-06)
[779] The fragility of pancakes - and better structures - (2006-06-26)
[943] Matching within multiline strings, and ignoring case in regular expressions - (2006-11-25)
[1403] Square Bracket protection in Tcl - (2007-10-23)
[1410] Tcl / regsub - changing a string and using interesting bits - (2007-10-27)
[3192] Tcl - Some example of HOW TO in handling data files and formats - (2011-03-04)
[3576] Tcl - apparently odd behaviour of string trimleft - (2012-01-13)
[4205] Regular Expression Substitution - Tcl - (2013-11-12)
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