---
url: >-
  /statelake/scripting-reference/functions-and-procedures/string-functions/stringtotoken.md
---

# StringToToken

The **StringToToken** function splits the string **S** into blocks based on the given list of separator characters specified by **aSeparators**, and returns the items as a zero-based **TStringList** type.

You can then access individual items using the properties of the **TStringList**. Being zero-based, the first block of data is zero (0), the 2nd is block one (1) e.t.c.

The values identified by **aSeparators** must be in list notation mode, with square brackets (\[ ]) at the beginning of the list, and at the end of the list, such as with the example shown below.

**aSeparators** can contain more than one separator character, such as \[',', '.', ';', ':'], but only single characters can be used as elements within the list.

Empty token items are not output to the **TStringList**. For example, the instruction StringToToken('123||ABC', \['|']) returns only two strings in the list - being **123** and **ABC**. This means that **StringToToken** might not be suitable for decoding and re-encoding lists that can have empty items, such as a line from a text file that has separated field values - e.g. a CSV file - because any empty fields will be dropped from the field list.

**Declaration**: Function StringToToken( s : string; aSeparators : TFloSeparators) : TStringList;

The following examples illustrate some simple possibilities.

```pascal
procedure OnMapEvent(var Value:Variant);
var
  AList, MyList, MyNextList, TheLastList : TStringList;
  Str1, Str2, Str3, Str4 : string;
begin
  AList := StringToToken('Abc|123||Xyx', ['|']);
  MyList := StringToToken('abc|123|456', ['|']);
  MyNextList := StringToToken('Simon, Peter, Nigel:Sally, Ethel:Brian, Florence, Zebedee', [':']);
  TheLastList := StringToToken('abcdef|Sue - Joe - Bob#"Why?", "When?": Peanuts + Snoopy + Woodstock', ['#', '|', ':']);

  LogInfo('The 3rd section is effectively lost in translation - there is nothing between the pipes . . . ');
  Str1 := AList[0];                     //returns 'Abc'
  Str2 := AList[1];                     //returns '123'
  Str3 := AList[2];                     //returns 'Xyz'
  LogInfo(Str1); LogInfo(Str2);; LogInfo(Str3); LogInfo('');

  Str1 := MyList[0];                     //returns 'abc'
  Str2 := MyList[1];                     //returns '123'
  Str3 := MyList[2];                     //returns '456'
  LogInfo(Str1); LogInfo(Str2);; LogInfo(Str3); LogInfo('');

  Str1 := MyNextList[0];                 //returns 'Simon, Peter, Nigel'
  Str2 := MyNextList[1];                 //returns 'Sally, Ethel'
  Str3 := MyNextList[2];                 //returns 'Brian, Florence, Zebedee'
  LogInfo(Str1); LogInfo(Str2);; LogInfo(Str3); LogInfo('')

  Str1 := TheLastList[0];                 //returns 'abcdef'
  Str2 := TheLastList[1];                 //returns 'Sue - Joe - Bob'
  Str3 := TheLastList[2];                 //returns '"Why?", "When?"'
  Str4 := TheLastList[3];                 //returns 'Peanuts + Snoopy + Woodstock'
  LogInfo(Str1); LogInfo(Str2);; LogInfo(Str3); LogInfo(Str4); LogInfo('')
end;
```
