Brian Dunning's FileMaker Custom Functions

ReplaceWords ( text ; searchstring ; replacestring )

replace multi values in a text

  Average rating: 4.3 (28 votes) Log in to vote

Michael Bijnens   Michael Bijnens
freelance developer
/

Share on Facebook Share on Twitter

  Sample input:
Replacewords (
"FileMaker Pro 12 has several new features and thats why you have to buy FileMaker Pro 12" ;
"12" ;
"13"
)
  Sample output:
"FileMaker Pro 13 has several new features and thats why you have to buy FileMaker Pro 13"

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

This CF can replace strings in a text.


** Difference between default substitute function:

Example :

Substitute ( "HOB" ; "OB" ; "HOB" )
result = "HHOB"
* FileMaker's substitute function find "OB" in the word "HOB" and replaces it into "HHOB".

ReplaceWords ( "HOB" ; "OB" ; "HOB" )
result = "HOB"
* CF ReplaceWords does not find "OB" as a word so it doesn't change anything.

** -----------------------------------------------------

ReplaceWords does only replace the compleet string not a part of a string !

 

Comments

oliver   oliver
May 20, 2014
And this is different from the built-in Substitute() … how?
 
Michael Bijnens   Michael Bijnens, Belgium
May 20, 2014
@ Oliver

I have edit the explanation of the CF.
 
oliver   oliver
May 20, 2014
Michael –

you're replacing words (or technically: values, after converting the string into a list by using the space character as delimiter), not text per se, so the function name is misleading..

Also, the recursive call in your CF uses a different function name …

And finally, you can do this much easier and non-recursive like …

ReplaceWords ( theText ; searchFor ; replaceWith ) =

Let (
~l = Substitute ( theText ; " " ; ¶ ) ;
Case (
searchFor = replaceWith or not PatternCount ( ¶ & ~l & ¶ ; ¶ & searchFor & ¶ ) ;
theText ;
Let ( [
r = Substitute ( ¶ & ~l ; ¶ & searchFor ; ¶ & replaceWith ) ;
res = Substitute ( r ; ¶ ; " " )
] ;
Middle ( res ; 2 ; Length ( res ) - 1 )
)
)
)
 
Michael Bijnens   Michael Bijnens, Belgium
May 20, 2014
Oliver -

I'm happy to get some feedback.. I have changed the CF name.

maybe your function is non-recursive but it has limits if you want to use it in a different
way.

I generally use it in script ( loops ).

mit freundlichen Grüßen,
Michael
 
Shevy   Shevy, Lagos
Apr 27, 2015
I really love this CF. In my solution, I want to make a search of some group of contacts who mistakenly entered gender as "Male" instead of "Female" , and then change all those to "Female"

How can I achieve that with this CF?
You mentioned using it in scripts, can you please give a simple script step example?

Thanks..
 
Andy   Andy
Nov 21, 2015
There seems to have a bug. If you replace a word say "city" with the word itself, the loop will be endless.
 

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.

Support this website.

This library has been a free commmunity resource for FileMaker users and developers for 20 years. It receives no funding and has no advertisements. If it has helped you out, I'd really appreciate it if you could contribute whatever you think it's worth: