Brian Dunning's FileMaker Custom Functions

AddConstantToString ( string ; fillchar ; posit ; direction ; iter )

Adds a constant string to very Nth position of a string

  Average rating: 4.5 (33 votes) Log in to vote

Martti Tumanto   Martti Tumanto
Martinova Oy
http://www,martinova.fi

Share on Facebook Share on Twitter

  Sample input:
AddConstantToString (123456789 ; "-" ; 5; "Right";0 )
  Sample output:
1234-56789

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

Recursive CF that formulates output strings by adding a constant string to every Nth position resulting a more readable grouped output for longer strings ( f.eg Bank references, serial numbers etc).
Grouping starts either Right (default) : 12-345-678 or Left: 123-456-78

 

Comments

Lee Smith   Lee Smith
Sep 8, 2009
You have an error in the CF. You have changed the name of your CF where it calls itself.

Solution is to change the name of the CF,

Or better yet, change the Calculation where it calls itself. i.e.
change AddFillCharToString to AddConstantToString

Lee
 
Martti Tumanto   Martti Tumanto, Espoo, Finland
Sep 9, 2009
Corrected, thank you Lee
 
Mike   Mike, Tennessee USA
Oct 22, 2015
I'm new to custom functions so I'm trying to learn the logic behind specific lines in this.

1. The "char" variable is set to the Mod function, but what does the <> 0 do? I cannot find where that would be supported as it's outside the Mod function.

2. The "stringout" function uses the Case function. The first test checks for iter=1, and sets the result to blank if true. There are no other tests within this Case startement however, but there are 3 more segments after this. I assume these to be default values, but that would mean three default values. How can you have more than one default in a single Case statement?
stringout = Case
(
iter = 1 ; "" ; //test and result if true
char ; //no test so default 1
dir1 ; //no test so default 2
fillCharacter //no test so default 3
);


The function works, I just don't know how it does with these variables defined that way.

Thanks.
 
Martti   Martti, Espoo, Finland
Oct 22, 2015
Hi Mike!

Thank you for your comment. Nice to hear that CF works. Here is some explanation about the magic:
1. char = Mod (iter ; posit+1) ≠ 0 . This is a Logical statement, equivalent to
char = if ( Mod(item ; posit+1 = 0 ; 1 ; 0)

2. Stringout-function ; please check the syntax of Case function: in this case
case (item = 1 ; "" ; // OK? write nothing in 1st iteration, just initiate recursive variables
char ; dir1 //if char flag is on , write the char (the names of these variables are admittedly misleading)
fillChacracter // this is the default ; write the fillchar

Happy learning with Filemaker!

Martti
 

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.