title: Java split and replace a string with value
body: <p>I have a following string which I have to split and replace the value on some condition</p>
  
  <pre><code>http://localhost:8080/api/upload/form/{uploadType}/{uploadName}
  </code></pre>
  
  <p>in which I have to replace the value only for  {uploadType}/{uploadName} . I really don't know how to go about to replace them with value. </p>
  
  <p>The strings which are in <code>{uploadType}/{uploadName}</code> can be of any type to replace.</p>
  
  <p>I've tried something like the following :</p>
  
  <p>package com.test.poc;</p>
  
  <pre><code>public class TestString {
  public static void main(String[] args) throws ClassNotFoundException {
      String toBeFixed = "http://localhost:8080/api/upload/form/{uploadType}/{uploadName}"; 
      String[] toReplaceWith =toBeFixed.split("{");
  for (String string : toReplaceWith) {
      System.out.println("string : "+string);
  }   
  }
  
  }
  </code></pre>
  
  <p>but i get the following exception:</p>
  
  <pre><code>Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition
  {
      at java.util.regex.Pattern.error(Pattern.java:1713)
      at java.util.regex.Pattern.closure(Pattern.java:2775)
      at java.util.regex.Pattern.sequence(Pattern.java:1889)
      at java.util.regex.Pattern.expr(Pattern.java:1752)
      at java.util.regex.Pattern.compile(Pattern.java:1460)
      at java.util.regex.Pattern.&lt;init&gt;(Pattern.java:1133)
      at java.util.regex.Pattern.compile(Pattern.java:823)
      at java.lang.String.split(String.java:2292)
      at java.lang.String.split(String.java:2334)
      at com.test.poc.TestString.main(TestString.java:9)
  </code></pre>
  
  <p>EDIT : </p>
  
  <p>this is the method i tried based on <code>Sean Patrick Floyd</code> answer</p>
  
  <pre><code>public String doPOSTPathVariable(String uri,List paramsList) throws IllegalArgumentException, IllegalAccessException, InstantiationException, Exception{
          String uriString="";
          UriComponents uriComponents = UriComponentsBuilder.fromUriString(uri).build();
          for (int j = 0; j&lt;= paramsList.size(); j++) {
              System.out.println("path variable");
              MethodParams methodParams;
              methodParams =(MethodParams) paramsList.get(j);
  
              if(methodParams.isPrimitive() &amp;&amp; methodParams.getDataType()=="boolean"){
                    uriString = uriComponents.expand(true).encode().toUriString();
              }
              if(methodParams.isPrimitive() &amp;&amp; methodParams.getDataType()=="java.math.BigDecimal"){
                  uriString = uriComponents.expand(123).encode().toUriString();
              }
              if(methodParams.isPrimitive() &amp;&amp; methodParams.getDataType()=="java.lang.String"){
                  uriString = uriComponents.expand("hexgen").encode().toUriString();
              }
         } 
          return uriString;
      }
  </code></pre>
  
  <p>but i get following exception :</p>
  
  <pre><code>java.lang.IllegalArgumentException: Not enough variable values available to expand 'uploadName'
      at org.springframework.web.util.UriComponents$VarArgsTemplateVariables.getValue(UriComponents.java:1025)
      at org.springframework.web.util.UriComponents.expandUriComponent(UriComponents.java:443)
      at org.springframework.web.util.UriComponents.access$1(UriComponents.java:431)
      at org.springframework.web.util.UriComponents$FullPathComponent.expand(UriComponents.java:800)
      at org.springframework.web.util.UriComponents.expandInternal(UriComponents.java:413)
      at org.springframework.web.util.UriComponents.expand(UriComponents.java:404)
      at com.hexgen.tools.HexgenClassUtils.doPOSTPathVariable(HexgenClassUtils.java:208)
      at com.hexgen.reflection.HttpClientRequests.handleHTTPRequest(HttpClientRequests.java:77)
      at com.hexgen.reflection.HexgenWebAPITest.main(HexgenWebAPITest.java:115)
  </code></pre>
  
  <p>Could some one help me on this please?</p>