Frequently Asked Questions > Practical Questions > Working with MAXScript Values >

# How do I filter a string including empty entries?

MAXScript FAQ > MAXScript Values > How do I filter a string including empty entries?

Note

In 3ds Max 8 and higher, a keyword parameter splitEmptyTokens: can be passed to the filterString function to perform this kind of filtering.

## A user asked:

The filterString function does not return empty entries. For example, if I am filtering by tabs a string containing two tabs in a row, no empty entry will be returned.

For example,

filterString "One\t\tThree Four,,Five ""\t, " #("One", "Three", "Four", "Five")

## Answer:

The following scripted function behaves as requested.

SCRIPTED FUNCTION:
    fn filterString2 theString theDelimiters =
    (
     theTokens = #() --array of tokens to return
     ready = false
     while not ready do --repeat until no more delimiters can be found
     (
      ready = true --raise a flag that we are done
      thePosArray = #() --init. an array to hold possible split positions
      for i = 1 to theDelimiters.count do --go through all delimiters
      (
       checkPos = findString theString theDelimiters[i] --check if the delimiter is in the string
       if checkPos != undefined do append thePosArray checkPos --if it is, add to the split positions array
      ) --end i loop
      if thePosArray.count > 0 then --if the array has any splitpositions,
      (
       sort thePosArray --sort the array in ascending order
       checkPos = thePosArray[1] --grab the first position
       aToken = substring theString 1 (checkPos-1) --take the token from start to the split pos. - 1
       append theTokens aToken --add the token to the array of tokens
       theString = substring theString (checkPos+1) theString.count --remove the token and the delimiter from the string
       ready = false --lower the flag because we are not ready yet
      ) --end if
     ) --end while loop
     append theTokens theString --add what is left of the string to the array
     theTokens --return the array of tokens
    )
    filterString2 "One\t\tThree,Four,,Five " "\t,"
    #("One", "", "Three", "Four", "", "Five ")
    filterString2 "One\t\tThree Four,,Five " "\t, "
    #("One", "", "Three", "Four", "", "Five", "")

#### See Also

- Frequently Asked Questions