### Question:
PlaceholderResolver { public String doParse(String strVal) { if (strVal == null) { return null; } return parseStringValue(strVal, visitedPlaceholders); } PlaceholderResolver(PlaceholderResolved resolvedInterceptor); String doParse(String strVal); boolean hasPlaceHolder(String strVal); static boolean substringMatch(CharSequence str, int index, CharSequence substring); void setPlaceholderPrefix(String placeholderPrefix); void setPlaceholderSuffix(String placeholderSuffix); static final String DEFAULT_PLACEHOLDER_PREFIX; static final String DEFAULT_PLACEHOLDER_SUFFIX; }### Answer:
@Test public void testDoParse() { final Map<String, String> placeholderVals = new HashMap<>(5); placeholderVals.put("key1", "china"); placeholderVals.put("key2", "3"); placeholderVals.put("key3", "beijin"); String testStr = "hello ${key1}"; PlaceholderResolver resolver = new PlaceholderResolver(placeholderVals::get); resolver.setPlaceholderPrefix("${"); resolver.setPlaceholderSuffix("}"); assertEquals(resolver.doParse(testStr), "hello china"); testStr = "hello ${key${key2}}"; assertEquals(resolver.doParse(testStr), "hello beijin"); }