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 > >