如何用Java格式化字符串

| 原始问题,但是如何格式化这样的字符串:   \“ {2}的步骤{1} \” 通过使用Java替换变量?在C#中很简单。     
已邀请:
        除了String.format,还要看一下“ 0”。格式不那么简洁,更接近于您提供的C#示例,您也可以将其用于解析。 例如:
int someNumber = 42;
String someString = \"foobar\";
Object[] args = {new Long(someNumber), someString};
MessageFormat fmt = new MessageFormat(\"String is \\\"{1}\\\", number is {0}.\");
System.out.println(fmt.format(args));
一个更好的示例利用了Java 1.5中的varargs和自动装箱改进功能,并将以上内容变成了单行代码:
MessageFormat.format(\"String is \\\"{1}\\\", number is {0}.\", 42, \"foobar\");
MessageFormat
对于使用choice修饰符进行国际化复数会更好一些。要指定一条在变量为1时正确使用单数形式的消息,否则为复数形式,可以执行以下操作:
String formatString = \"there were {0} {0,choice,0#objects|1#object|1<objects}\";
MessageFormat fmt = new MessageFormat(formatString);
fmt.format(new Object[] { new Long(numberOfObjects) });
    
        看一下String.format。但是请注意,它采用类似于C \的printf函数系列的格式说明符-例如:
String.format(\"Hello %s, %d\", \"world\", 42);
将返回“ Hello world,42”。在了解格式说明符时,您可能会发现这很有用。安迪·托马斯·克拉默(Andy Thomas-Cramer)很好,可以在下面的评论中保留此链接,这似乎指向官方规范。最常用的是: %s-插入一个字符串 %d-插入一个有符号整数(十进制) %f-插入一个实数,标准符号 这与C#完全不同,后者使用带有可选格式说明符的位置引用。这意味着您不能做以下事情:
String.format(\"The {0} is repeated again: {0}\", \"word\");
...而无需实际重复传递给printf / format的参数。 (请参见下面的Scrum Meister的评论) 如果只想直接打印结果,则可以按照自己的喜好找到System.out.printf(PrintStream.printf)。     
        我已经为此写了简单的方法:
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\");
    
        如果选择不使用String.format,则另一个选项是+二进制运算符
String str = \"Step \" + a + \" of \" + b;
这相当于
new StringBuilder(\"Step \").append(String.valueOf(1)).append(\" of \").append(String.valueOf(2));
您选择使用哪种。 StringBuilder更快,但速度差异很小。我更喜欢使用
+
运算符(该运算符为
StringBuilder.append(String.valueOf(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(\"================================\");

    }
}
  工厂   \“ =============================== \”   ved15space123   ved15space123   ved15space123   \“ =============================== Java解决方案 \“-\”用于左缩进 \“ 15 \”使得字符串的最小长度为15 \“ s \”(在%之后的几个字符)将被我们的字符串替换 0将我们的整数用左边的0填充 3使我们的整数最小为3     
        这个解决方案对我有用。我需要为REST客户端动态创建网址,因此我创建了此方法,因此您只需要像这样传递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 /订单\”     

要回复问题请先登录注册