我有像:
这样的字符串"{0}_something_{1}-{2}-something"
我需要将这些字符串转换为
"%s_something_%s-%s-something"
这样做的最佳方式是什么?
答案 0 :(得分:6)
myString.replaceAll("\\{\\d\\}", "%s")
如果您正在尝试创建Java格式字符串,那么您应该可能保留这些替换的顺序,否则像foo {2} bar {1} baz {0}
这样的字符串会出现问题:
myString.replaceAll("\\{(\\d)\\}", "%$1$$s");
答案 1 :(得分:4)
我会使用正则表达式。
String data = "{0}something{1}-{2}-something";
System.out.println(data.replaceAll("\\{.*?\\}", "%s_"));
输出:
%s_something%s_-%s_-something
编辑:
仅在{
和}
System.out.println(data.replaceAll("\\{\\d+\\}", "%s_"));
答案 2 :(得分:1)
String result = MessageFormat.format("{0}something{1}-{2}-something", "%s_", "_%s", "%s");
答案 3 :(得分:1)
String str = "{0}something{1}-{2}-something";
String clean = str.replaceAll("(\\{\\d+\\}-?)", "%s_");
System.out.println(clean); // outputs: %s_something%s_%s_something
答案 4 :(得分:0)
考虑使用MessageFormat。 - http://download.oracle.com/javase/6/docs/api/java/text/MessageFormat.html