It's not a bug---that's a feature! :p

>From the javadoc: "If this character ['$'] is placed before a variable
reference, this reference is ignored and won't be replaced." So even when
you use three dollar signs, you still have a variable reference
("${amount}") with the escape character placed before it, thus the variable
reference will not be replaced.

To achieve your desired effect, I think you either have to put the dollar
sign in the mapping (e.g., "values.put("amount", "$20.00"), use different
delimiters, or just set a different escape character.

Regards,
Anthony Brice

On Wed, Jul 22, 2015 at 2:50 PM, Woonsan Ko <woon...@apache.org> wrote:

> Hi there,
>
> I tried to use the following, expecting "...ick brown fox paid $20.00
> to jump over the la…":
>
>     // In org.apache.commons.lang3.text.StrSubstitutorTest.java locally
>     // after cloning https://github.com/woonsan/commons-lang.
>     @Test
>     public void testReplaceEscapingDollarSign() {
>         values.put("amount", "20.00");
>         doTestReplace("The quick brown fox paid $20.00 to jump over
> the lazy dog.",
>                       "The ${animal} paid $$${amount} to jump over the
> ${target}.", true);
>     }
>
> (I put double dollar signs like $$${amount} because $ is the default
> escape character.)
>
> But, the result was:"...ick brown fox paid $${amount} to jump over the
> la…".
>
> Is it a bug or did I miss something?
>
> Regards,
>
> Woonsan
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
> For additional commands, e-mail: user-h...@commons.apache.org
>
>

Reply via email to