字符串variables插值Java

在Java的字符串建设混淆了我。 我正在做一些事情,比如:

url += "u1=" + u1 + ";u2=" + u2 + ";u3=" + u3 + ";u4=" + u4 + ";"; url += "x=" + u1 + ";y=" + u2 + ";z=" + u3 + ";da1=" + u4 + ";"; url += "qty=1;cost=" + orderTotal + ";ord=" + orderId + "?"; 

或者,使用StringBuilder,如下所示:

  url.append("u1="); url.append(u1); url.append(";u2="); url.append(u2); url.append(";u3="); url.append(u3); url.append(";u4="); url.append(u4); url.append(";"); url.append("x="); url.append(u1); url.append(";y="); url.append(u2); url.append(";z="); url.append(u3); url.append(";da1="); url.append(u4); url.append(";"); url.append("qty=1;"); url.append("cost="); url.append(orderTotal); url.append(";ord="); url.append(orderId); url.append("?"); 

当然,我错过了一些东西。 有GOT是一个更好的方法。 就像是:

代替:

 urlString += "u1=" + u1 + ";u2=" + u2 + ";u3=" + u3 + ";u4=" + u4 + ";"; 

做:

 urlString += Interpolator("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4); 

要么:

 urlStringBuilder.append(Interpolator("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4)); 

如果您使用Java 5或更高版本,则可以使用String.format

 urlString += String.format("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4); 

详情请参阅Formatter程序。

请注意,Java中没有可变插值。 variables插值是用字符串内的值进行variables替换。 Ruby中的一个例子:

 #!/usr/bin/ruby age = 34 name = "William" puts "#{name} is #{age} years old" 

Ruby解释器会自动用字符串中的值替换variables。 我们要做插值的事实是由印象字符暗示的。 在Ruby中,它是#{}。 在Perl中,它可以是$,%或@。 Java只会打印这样的字符,它不会扩展它们。

Java中不支持variables插值。 而不是这个,我们有字符串格式。

 package com.zetcode; public class StringFormatting { public static void main(String[] args) { int age = 34; String name = "William"; String output = String.format("%s is %d years old.", name, age); System.out.println(output); } } 

在Java中,我们使用String.format()方法构建一个新的字符串。 结果是一样的,但方法是不同的。

见http://en.wikipedia.org/wiki/Variable_interpolation

String.format()来拯救!

只需要添加一个java.text.MessageFormat ,并带有数字参数索引。

附加文档中的第一个示例

 int planet = 7; String event = "a disturbance in the Force"; String result = MessageFormat.format( "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.", planet, new Date(), event); 

结果:

 At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7. 

你可以使用JVM的Super(cede of Java)Kotlin,它有一个像ES5,Ruby和Python那样插入字符串的好方法。

 class Client(val firstName: String, val lastName: String) { val fullName = "$firstName $lastName" }