What is the recommended way of concatenation of strings?
            Asked
            
        
        
            Active
            
        
            Viewed 1e+01k times
        
    27
            
            
        - 
                    Look also answers at https://stackoverflow.com/questions/1430093/how-to-concisely-concatenate-strings-in-tcl – B. Go Jun 19 '19 at 22:52
4 Answers
49
            
            
        Tcl does concatenation of strings as a fundamental operation; there's not really even syntax for it because you just write the strings next to each other (or the variable substitutions that produce them).
set combined $a$b
If you're doing concatenation of a variable's contents with a literal string, it can be helpful to put braces around the variable name or the whole thing in double quotes. Or both:
set combined "$a${b}c d"
Finally, if you're adding a string onto the end of a variable, use the append command; it's faster because it uses an intelligent memory management pattern behind the scenes.
append combined $e $f $g
# Which is the same as this:
set combined "$combined$e$f$g"
 
    
    
        Donal Fellows
        
- 133,037
- 18
- 149
- 215
- 
                    2Note that the first argument to `append` is a variable name, just like the first arg to `set`. – Donal Fellows May 07 '11 at 06:25
- 
                    This isn't really right in that you can't write arbitrary strings back-to-back and get their concatenation. E.g. `"a""b"` , or `{foo}"bar"` don't work. It's more true in awk, where something like `$1 ":" $2` _does_ work. – ilkkachu Jul 03 '22 at 08:51
8
            
            
        If they are contained in variables, you can simply write "$a$b".
 
    
    
        LaC
        
- 12,624
- 5
- 39
- 38
- 
                    I am doing exactly in the way you have written with a small difference like ${a}${b}, but I worry that it is not a correct way to do, is it? – Narek May 06 '11 at 08:30
- 
                    2They are both right - you would use the ${a}${b} construction in the case where you are building a string and there may be an ambiguity about the variable name e.g. set url /admin/item-edit?item_name=${item_id}name – TrojanName May 06 '11 at 08:42
2
            
            
        These days, you can concatenate two literal strings using the "string cat" command:
set newstring [string cat "string1" "string2"]
 
    
    
        Sam Bromley
        
- 73
- 4
 
    