操纵以下字符串的最佳方法是什么?

时间:2011-06-21 12:14:34

标签: java string

我有像:

这样的字符串
"{0}_something_{1}-{2}-something"

我需要将这些字符串转换为

"%s_something_%s-%s-something"

这样做的最佳方式是什么?

5 个答案:

答案 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)