简单的问题,但是我如何格式化字符串
“{2}的{1}步”
用Java代替变量?用c#很简单。
简单的问题,但是我如何格式化字符串
“{2}的{1}步”
用Java代替变量?用c#很简单。
当前回答
我写了这个函数,它做了正确的事情。用同名变量的值插入以$开头的单词。
private static String interpol1(String x){
Field[] ffield = Main.class.getDeclaredFields();
String[] test = x.split(" ") ;
for (String v : test ) {
for ( Field n: ffield ) {
if(v.startsWith("$") && ( n.getName().equals(v.substring(1)) )){
try {
x = x.replace("$" + v.substring(1), String.valueOf( n.get(null)));
}catch (Exception e){
System.out.println("");
}
}
}
}
return x;
}
其他回答
public class StringFormat {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("================================");
for(int i=0;i<3;i++){
String s1=sc.next();
int x=sc.nextInt();
System.out.println(String.format("%-15s%03d",s1,x));
}
System.out.println("================================");
}
}
outpot "================================" ved15space123 ved15space123 ved15space123 "================================
Java解决方案
“-”用于左缩进 “15”使得字符串的最小长度为15 “s”(在%后面几个字符)将被我们的String替换 0在整数的左边加上0 3使整数的最小长度为3
我写了一个简单的方法:
public class SomeCommons {
/** Message Format like 'Some String {0} / {1}' with arguments */
public static String msgFormat(String s, Object... args) {
return new MessageFormat(s).format(args);
}
}
所以你可以这样使用它:
SomeCommons.msfgFormat("Step {1} of {2}", 1 , "two");
我写了这个函数,它做了正确的事情。用同名变量的值插入以$开头的单词。
private static String interpol1(String x){
Field[] ffield = Main.class.getDeclaredFields();
String[] test = x.split(" ") ;
for (String v : test ) {
for ( Field n: ffield ) {
if(v.startsWith("$") && ( n.getName().equals(v.substring(1)) )){
try {
x = x.replace("$" + v.substring(1), String.valueOf( n.get(null)));
}catch (Exception e){
System.out.println("");
}
}
}
}
return x;
}
来自Apache Commons Text的stringsubstitutor helper类提供了命名变量替换
Map<String, String> valuesMap = new HashMap<>();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String resolved = new StringSubstitutor(valuesMap).replace("The ${animal} jumped over the ${target}.");
System.out.println(resolved); // The quick brown fox jumped over the lazy dog.
这个解决方案对我很有效。我需要动态地为REST客户端创建url,所以我创建了这个方法,所以你只需要像这样传递restURL
/customer/{0}/user/{1}/order
并添加尽可能多的参数:
public String createURL (String restURL, Object ... params) {
return new MessageFormat(restURL).format(params);
}
你只需要像这样调用这个方法:
createURL("/customer/{0}/user/{1}/order", 123, 321);
输出
“用户/客户/ 123 / / 321 /秩序”