0

私はいくつかの条件で値を分割して置き換える必要がある次の文字列を持っています

http://localhost:8080/api/upload/form/{uploadType}/{uploadName}

{uploadType}/{uploadName} の値のみを置き換える必要があります。それらを価値に置き換える方法が本当にわかりません。

にある文字列は、{uploadType}/{uploadName}置換する任意のタイプにすることができます。

私は次のようなものを試しました:

パッケージ com.test.poc;

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);
}   
}

}

しかし、次の例外が発生します。

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.<init>(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)

編集 :

Sean Patrick Floydこれは私が答えに基づいて試した方法です

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<= paramsList.size(); j++) {
            System.out.println("path variable");
            MethodParams methodParams;
            methodParams =(MethodParams) paramsList.get(j);

            if(methodParams.isPrimitive() && methodParams.getDataType()=="boolean"){
                  uriString = uriComponents.expand(true).encode().toUriString();
            }
            if(methodParams.isPrimitive() && methodParams.getDataType()=="java.math.BigDecimal"){
                uriString = uriComponents.expand(123).encode().toUriString();
            }
            if(methodParams.isPrimitive() && methodParams.getDataType()=="java.lang.String"){
                uriString = uriComponents.expand("hexgen").encode().toUriString();
            }
       } 
        return uriString;
    }

しかし、次の例外が発生します:

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)

誰かがこれについて私を助けてくれますか?

4

5 に答える 5

2

おそらくUriBuilder

UriBuilder.fromPath("http://localhost:8080/api/upload/form/{uploadType}/{uploadName}").build("foo", "bar");

(便利なことに、使用している正確なフォーマットを使用することができます)

于 2013-05-02T10:20:44.413 に答える
2

Spring MVC を使用する場合、この機能は、新しい URI ビルダー テクノロジーを使用してすぐに利用できます。

UriComponents uriComponents =
    UriComponentsBuilder.fromUriString(
        "http://example.com/hotels/{hotel}/bookings/{booking}").build();

URI uri = uriComponents.expand("42", "21").encode().toUri();
// or:
String uriString = uriComponents.expand("42", "21").encode().toUriString();

(実際、Spring MVC を使用していなくても、このテクノロジーを引き続き使用できますが、クラスパスに Spring MVC jar が必要になることは明らかです)

于 2013-05-02T10:40:04.993 に答える
0

Aは、範囲の繰り返しに使用される{正規表現です。meta-character

それをする前に

toBeFixed = toBeFixed.replaceAll("\\{", "\n");   

ドキュメントも参照してください: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

同様の質問: Java String ReplaceAll メソッドが不正な繰り返しエラーを引き起こしていますか?

于 2013-05-02T10:20:09.970 に答える