Brian Dunning's FileMaker Custom Functions

Format_Text_LikeTemplate__CFpub ( aString ; aTemplate )

Use to Format Numbers or Text for displaying in a structured way, for instance Phone Numbers or Bank Codes

  Average rating: 2.5 (201 votes) Log in to vote

Toby Beedell   Toby Beedell
na
http://na

Share on Facebook Share on Twitter

  Sample input:
Format_Text_LikeTemplate__CFpub ( "1234567890" , "(XXX) XXX-XXXX" )
  Sample output:
"(123) 456-7890"

  Function definition: (Copy & paste into FileMaker's Edit Custom Function window)

This function will strip out any non-alphanumeric (A-Z, a-z & 0-9) characters and format the result in the same structure as provided by the aTemplate parameter.
I have opted to use the upper and lower case of the letter 'X' as my content key in the mask template,
but you can use whatever character you want by changing the '_x' variable in the first Let statement.

You can include any characters you wish in the mask (keeping in mind that 'X' and 'x" will be replaced) and the function will include them in
exactly the same position in the result.

The function will start from the beginning of the mask template looking for the first occurence of 'X' or 'x',
If your mask template does not start with an X (for instance you may want to indent or prepend some text or numbers to the beginning)
then the function will place this individual or sequence of non-X characters at the start of the result.
NOTE: If you do not supply any X characters in the mask template then the entire set of mask characters will show up in front of the original text.
This is not a bug as this sort of result may in fact be exactly what is desired.

Once it has found the position of the first X in the mask, it grabs the first character of the filtered text and replaces the X with the text character.
It then passes the remainder of the mask and the remainder of the filtered text on for another pass of the function.
This process is repeated over and over until either the text is empty or the mask has finished.

In the case of the later ... the function will simply add the remaining text characters to the end of the result.

Paramaters:
aString: the text to pass
aTemplate: a string of text to represent the formatting. (Accepted parameter: a string of X or x to signify content and any other characters to insert as delimiters)

Sample Input:
// maybe you want to format phone numbers like so ...
Format_Text_LikeTemplate__CFpub ( "1234567890" , "(XXX) XXX-XXXX" )

// or have a need to mix up upper and lower cases within a structured code
Format_Text_LikeTemplate__CFpub ( "gbabcdefcom" , "xx*XXX.XxX.xxx" )

// maybe you have a "dewey decimal"-like system that needs to be formatted a particular way
Format_Text_LikeTemplate__CFpub ( " 6171234567890 " , "xxx.xxxx.xxx.xxx" )

// or for instance to format IBAN banking codes
Format_Text_LikeTemplate__CFpub ( "gb-90-midl12341234123412" , "XXXX XXXX XXXX XXXX XXXX XX" )

Results:
"(123) 456-7890"
"gb*ABC.DeF.com"
"617.1234.567.890"
"GB90 MIDL 1234 1234 1234 12"

Recursive:
yes

 

Comments

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.