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 <[email protected]> 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: [email protected]
> For additional commands, e-mail: [email protected]
>
>