commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Woonsan Ko <woon...@apache.org>
Subject Re: Commons Lang substitution
Date Wed, 18 Nov 2015 10:27:05 GMT
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..

Regards,

Woonsan


On Wed, Nov 18, 2015 at 4:34 AM, Alex Soto <asotobu@gmail.com> wrote:
> Thanks for your help but sadly doesn't work as expected. Look:
>
> Map<String, String> map = new HashMap<String, String>();
>         map.put("version", "1");
>
>         StrSubstitutor strSubstitutor = new StrSubstitutor(map, "$", "");
>         strSubstitutor.setVariableSuffixMatcher(StrMatcher.trimMatcher());
>         System.out.println(strSubstitutor.replace("The $version is
> awesome"));
>
> prints: The 1is awesome
>
> Notice that it eats the white space.
>
> Alex.
>
>
>
> El dt., 17 nov. 2015 a les 23:19, Woonsan Ko (<woonsan@apache.org>) va
> escriure:
>
>> I think Jörg is right.
>>
>> You may change the suffix StrMather through
>> #setVariableSuffixMatcher() on a StrSubstitutor.
>> I haven't tried it, but it should be something like this example:
>>
>> final Map<String, V> valueMap = ...;
>> StrSubstitutor  subst = new StrSubstitutor(valuesMap, "$", ""); //
>> NONE_MATCHER for suffix initially
>> subst.setVariableSuffixMatcher(StrMatcher.trimMatcher());
>>
>> HTH,
>>
>> Woonsan
>>
>>
>> On Tue, Nov 17, 2015 at 2:20 PM, Jörg Schaible <joerg.schaible@gmx.de>
>> wrote:
>> > 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: user-unsubscribe@commons.apache.org
>> > For additional commands, e-mail: user-help@commons.apache.org
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message