This test seems flawed; wouldn't it only work w/ id's that contained just a single interpolation w/ no extra text? Some other thoughts:

* Feels weird to me that interpolation would remove the "%{" & "}" values in cases where the field name wasn't found. Seems like the ctrl chars should be left in the string to make it clear that interpolation didn't happen.
* Rather than using a bespoke comparison to check for interpolation failure, interpolateFlag could return a value that tells whether or not there were any interpolation failures.