Re: Commons Lang substitution

I could be wrong, but I do believe StrSubstitor requires a prefix and
suffix. I don't think the class will replace variables that aren't in the
map either, unless you write a custom StrLookup that returns an empty
string for variables not previously defined.
On Sat, Nov 14, 2015 at 11:02 AM Alex Soto <[hidden email]> wrote:

> Hi I have two special requirements that I think that Common-Lang
> StrSubstitutor does not cover, but I would like to know if it is correct or
> not.
>
> The first requirement is that I would like to know if there is a way to
> make StrSubstitutor works with using simple character as prefix and no
> suffix. For example:
>
> "This is my $name and I am happy"
>
> I have tried by using new StrSubstitutor(map, "$", "") and
> StrSubstitutor(map, "$", " ") but no luck.
>
> I have tried with commons-lang and commons-lang3.
>
> The second one is that I would like to know if there is a way to force that
> in case of no substitution found, the var is replaced with white space
> instead of untouch it.
>
> Thank you very much for your attention.
>
> Alex.
>

Re: Commons Lang substitution

> I could be wrong, but I do believe StrSubstitor requires a prefix and
> suffix. I don't think the class will replace variables that aren't in the
> map either, unless you write a custom StrLookup that returns an empty
> string for variables not previously defined.
>

Yes, this is correct. The replace with blank could be implemented using a
custom StrLookup. However, it is not possible to configure a StrSubstitutor
to use only a starting character.

Benedikt

> On Sat, Nov 14, 2015 at 11:02 AM Alex Soto <[hidden email]> wrote:
>
> > Hi I have two special requirements that I think that Common-Lang
> > StrSubstitutor does not cover, but I would like to know if it is correct
> or
> > not.
> >
> > The first requirement is that I would like to know if there is a way to
> > make StrSubstitutor works with using simple character as prefix and no
> > suffix. For example:
> >
> > "This is my $name and I am happy"
> >
> > I have tried by using new StrSubstitutor(map, "$", "") and
> > StrSubstitutor(map, "$", " ") but no luck.
> >
> > I have tried with commons-lang and commons-lang3.
> >
> > The second one is that I would like to know if there is a way to force
> that
> > in case of no substitution found, the var is replaced with white space
> > instead of untouch it.
> >
> > Thank you very much for your attention.
> >
> > Alex.
> >
>

Re: Commons Lang substitution

Benedikt Ritter wrote:

> Hello,
>
> 2015-11-14 22:25 GMT+01:00 Anthony Brice <[hidden email]>:
>
>> I could be wrong, but I do believe StrSubstitor requires a prefix and
>> suffix. I don't think the class will replace variables that aren't in the
>> map either, unless you write a custom StrLookup that returns an empty
>> string for variables not previously defined.
>>
>
> Yes, this is correct. The replace with blank could be implemented using a
> custom StrLookup. However, it is not possible to configure a
> StrSubstitutor to use only a starting character.

End "character" could be any non-alphanum character. Isn't it what the
StrMatcher could be used for?

> Benedikt Ritter wrote:
>
> > Hello,
> >
> > 2015-11-14 22:25 GMT+01:00 Anthony Brice <[hidden email]> >:
> >
> >> I could be wrong, but I do believe StrSubstitor requires a prefix and
> >> suffix. I don't think the class will replace variables that aren't in
> the
> >> map either, unless you write a custom StrLookup that returns an empty
> >> string for variables not previously defined.
> >>
> >
> > Yes, this is correct. The replace with blank could be implemented using a
> > custom StrLookup. However, it is not possible to configure a
> > StrSubstitutor to use only a starting character.
>
> End "character" could be any non-alphanum character. Isn't it what the
> StrMatcher could be used for?
>
> Cheers,
> Jörg
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]> For additional commands, e-mail: [hidden email]>
>

> Alex Soto wrote:
>
>> Hi, thank you for your answers, Jörg I think that StrMatcher is for
>> implementing where you want to get information to be replaced on the
>> string, not for parsing issues.
>
> Instead of guessing, I'd rather have a look into the Javadocs of
> StrSubstitutor.
>
> Cheers,
> Jörg
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]> For additional commands, e-mail: [hidden email]>

Re: Commons Lang substitution

Hi Alex,

It seems working as it was designed, but probably not for your expectation:
- When using "${" and "}", "The ${version} is awesome" would be
substituted to "The 1 is awesome", removing the prefix and suffix.
- In the same way, when using "$" and a whitespace, "The $version is
awesome" would be substituted to "The 1is awesome", removing the
prefix and the whitespace as suffix. ;-)

Anyway, I don't think StrSubstitutor was considered in the way you
want to use now.
If you can safely assume that a space should come after a variable
expression, then maybe you can override
StrSubstitutor#resolveVariable(String, StrBuilder, int, int) to append
a space.
If you can't but you need to keep the white space given in the input,
maybe you can implement a special variable suffix matcher to keep the
last found white space character and use it in the overriden
#resolveVariable(). But this is just an idea. I guess you need to try
some possible approaches..