簡體   English   中英

在java中替換字符串的有效方法

[英]Efficient way to replace strings in java

我有一個像這樣的字符串模板:

http://server/{x}/{y}/{z}/{t}/{a}.json

我有價值觀:

int x=1,y=2,z=3,t=4,a=5;

我想知道這是更換的efficent方式{x}的值設置為x ,也是如此y,z,t,z

String template = "http://server/%s/%s/%s/%s/%s.json";
String output = String.format(template, x, y, z, t, a);

使用MessageFormat.java

MessageFormat messageFormat = new MessageFormat("http://server/{0}/{1}/{2}/{3}/{4}.json");
Object[] args = {x,y,z,t,a};
String result = messageFormat.format(args);

另一種方法( C# way ;) ):

MessageFormat mFormat = new MessageFormat("http://server/{0}/{1}/{2}/{3}/{4}.json");
Object[] params = {x, y, z, t, a};
System.out.println(mFormat.format(params));

OUTPUT:

http://server/1/2/3/4/5.json
http://server/{x}/{y}/{z}/{t}/{a}.json

如果您可以將其更改為http://server/{0}/{1}/{2}/{3}/{4}.json ,則可以使用MessageFormat

String s = MessageFormat.format("http://server/{0}/{1}/{2}/{3}/{4}.json", x, y, z, t, a);

要在示例中確切地替換占位符,可以使用StrinUtils.replaceEach

org.apache.commons.lang.StringUtils.replaceEach(
"http://server/{x}/{y}/{z}/{t}/{a}.json",
new String[]{"{x}","{y}","{z}","{t}","{a}"},
new String[]{"1","2","3","4","5"});

但是, MessageFormat會更高效,但需要將x替換為0,y替換為1等。

如果您將格式更改為

"http://server/${x}/${y}/${z}/${t}/${a}.json",

您可以考慮使用Velocity ,它具有專門用於查找$ {和}出現的解析器。

最有效的方法是編寫自己的解析器來搜索下一個{出現,而不是},而不是替換占位符。

這可能是可能的答案。

    String url= "http://server/{x}/{y}/{z}/{t}/{a}.json";
    int x=1,y=2,z=3,t=4,a=5;

    url = url.replaceAll("\\{x\\}", String.valueOf(x));
    url = url.replaceAll("\\{y\\}", String.valueOf(y));
    url = url.replaceAll("\\{z\\}", String.valueOf(z));
    url = url.replaceAll("\\{t\\}", String.valueOf(t));
    url = url.replaceAll("\\{a\\}", String.valueOf(a));

    System.out.println("url after : "+ url);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM