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, Tegernsee
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, Tegernsee
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, Beijing
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.

Under construction. Email me your wish list for improvements.