On 30/09/2019 16:54, Graeme Fowler via Exim-users wrote:
> I'm trying to do some manipulation of the From: field display name section in 
> order to do matching against a remote data source.
> 
> To do this, I want to take the name "Fred Bloggs" and turn that into 
> "fredbloggs" and "bloggsfred". That bit is easy, using the sg operator with a 
> match and the resulting $1, $2 item values.
> 
> The edge case is that for entities of three or more words (well, actually for 
> the two word case too) I don't want to have to hard-code a set of ever-longer 
> matches and assignments using $3, $4 etc - I'd like to be able to use 
> something to do this dynamically using the map operator. For this I'm trying 
> to use the ${listcount: expansion to give me the number of elements.
> 
> However... using a space separated list is proving to be a challenge. 
> Bizarrely:
> 
> ${listcount:Fred:Bloggs} == 2 (correct)
> ${listcount:Fred:J:Bloggs == 3 (correct)
> 
> yet:
> 
> ${listcount:<" "Fred J Bloggs} == 2, because it's taking the first double 
> quote as the separator.
> 
> Is there any way at all to specify a space separator for a list? I'm damned 
> if I can work one out!

No; whitespace is special around list elements (Ch 6, section 20) so
there would be Issues in handling space as a separator.

If you're happy there won't be any adjacent spaces, just
${listcount:${tr {Fred J Bloggs}{ }{:}}}

- however, for this untrusted data, perhaps tidying it up by
taking the tr result and using filter with a condition for
nonempty, would be wise.
-- 
Cheers,
  Jeremy

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to