title: What is an efficient way to replace many characters in a string?
body: <p>String handling in Java is something I'm trying to learn to do well. Currently I want to take in a string and replace any characters I find.</p>
  
  <p>Here is my current inefficient (and kinda silly IMO) function. It was written to just work.</p>
  
  <pre><code>public String convertWord(String word)
  {
      return word.toLowerCase().replace('á', 'a')
                               .replace('é', 'e')
                               .replace('í', 'i')
                               .replace('ú', 'u')
                               .replace('ý', 'y')
                               .replace('ð', 'd')
                               .replace('ó', 'o')
                               .replace('ö', 'o')
                               .replaceAll("[-]", "")
                               .replaceAll("[.]", "")
                               .replaceAll("[/]", "")
                               .replaceAll("[æ]", "ae")
                               .replaceAll("[þ]", "th");
  }
  </code></pre>
  
  <p>I ran 1.000.000 runs of it and it took 8182ms. So how should I proceed in changing this function to make it more efficient?</p>
  
  <p>Solution found:</p>
  
  <p>Converting the function to this</p>
  
  <pre><code>public String convertWord(String word)
  {
      StringBuilder sb = new StringBuilder();
  
      char[] charArr = word.toLowerCase().toCharArray();
  
      for(int i = 0; i &lt; charArr.length; i++)
      {
          // Single character case
          if(charArr[i] == 'á')
          {
              sb.append('a');
          }
          // Char to two characters
          else if(charArr[i] == 'þ')
          {
              sb.append("th");
          }
          // Remove
          else if(charArr[i] == '-')
          {
          }
          // Base case
          else
          {   
              sb.append(word.charAt(i));
          }
      }
  
      return sb.toString();
  }
  </code></pre>
  
  <p>Running this function 1.000.000 times takes 518ms. So I think that is efficient enough. Thanks for the help guys :)</p>