---
name: "split"
section: "n"
platform: "macos"
package: "tcl"
version: "152"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/split/n"
---

# split(n)

Split a string into a proper Tcl list

## NAME

split - Split a string into a proper Tcl list

## SYNOPSIS

**split** *string* ?*splitChars*?

## DESCRIPTION

Returns a list created by splitting *string* at each character that is in the *splitChars* argument. Each element of the result list will consist of the characters from *string* that lie between instances of the characters in *splitChars*. Empty list elements will be generated if *string* contains adjacent characters in *splitChars*, or if the first or last character of *string* is in *splitChars*. If *splitChars* is an empty string then each character of *string* becomes a separate element of the result list. *SplitChars* defaults to the standard white-space characters.

## EXAMPLES

Divide up a USENET group name into its hierarchical components: **split** "comp.lang.tcl.announce" .\
       *→ comp lang tcl announce*

See how the **split** command splits on *every* character in *splitChars*, which can result in information loss if you are not careful: **split** "alpha beta gamma" "temp"\
       *→ al {ha b} {} {a ga} {} a*

Extract the list words from a string that is not a well-formed list: **split** "Example with {unbalanced brace character"\
       *→ Example with \\{unbalanced brace character*

Split a string into its constituent characters **split** "Hello world" {}\
       *→ H e l l o { } w o r l d*

### PARSING RECORD-ORIENTED FILES

Parse a Unix /etc/passwd file, which consists of one entry per line, with each line consisting of a colon-separated list of fields: ## Read the file set fid \[open /etc/passwd\] set content \[read $fid\] close $fid

\## Split into records on newlines set records \[**split** $content "\\n"\]

\## Iterate over the records foreach rec $records {

   \## Split into fields on colons\
    set fields \[**split** $rec ":"\]

   \## Assign fields to variables and print some out...\
    lassign $fields \\\
          userName password uid grp longName homeDir shell\
    puts "$longName uses \[file tail $shell\] for a login shell" }

## SEE ALSO

[join(n)](/join/n.md), [list(n)](/list/n.md), [string(n)](/string/n.md)

## KEYWORDS

list, split, string
