title: Avoid recursive replacement on a string
body: <p>Assume there is a string:</p>
  
  <pre><code>"I'm a boy."
  </code></pre>
  
  <p>and some synonyms words (in key-value format): </p>
  
  <pre><code>boy -&gt; "male yong"
  yong -&gt; "age under 18"
  </code></pre>
  
  <p>If I replace the string by synonyms words <strong>one by one</strong>, it will be:</p>
  
  <p>Step 1, find word "boy" and replace it: <code>"I'm a male young."</code>
  Step 2, find word "young" and replace it: <code>"I'm a male age under 18."</code>
  Actually I need not recursive replacement, I need only replace the orginal string, in other words the step 2 should find "young" in orginal string:"I'm a boy." not the "I'm a male young." There is a simple solution: </p>
  
  <p>Firstly replace key to %s and add synonyms word to a list:</p>
  
  <pre><code>string: "I'm a %s"
  list: "male yong"
  </code></pre>
  
  <p>Then format string with list:</p>
  
  <pre><code>String.format(string, list)
  </code></pre>
  
  <p>It works fine but stupid and slow, anyone have more clear solution?</p>