Каков наилучший способ манипулировать следующей строкой? - PullRequest
0 голосов
/ 21 июня 2011

У меня есть строки вроде:

"{0}_something_{1}-{2}-something"

, и мне нужно преобразовать эти строки в

"%s_something_%s-%s-something"

, как лучше всего это сделать?

Ответы [ 5 ]

6 голосов
/ 21 июня 2011
myString.replaceAll("\\{\\d\\}", "%s")

Если вы пытаетесь создать строку в формате Java, вам следует , вероятно, сохранить порядок этих замен, в противном случае такие строки, как foo {2} bar {1} baz {0}, будут создавать проблемы:

myString.replaceAll("\\{(\\d)\\}", "%$1$$s");
4 голосов
/ 21 июня 2011

Я бы использовал регулярное выражение.

String data = "{0}something{1}-{2}-something";
System.out.println(data.replaceAll("\\{.*?\\}", "%s_"));

Выход:

%s_something%s_-%s_-something

Edit: Регулярное выражение, которое заменяет только если есть цифры от { до }

System.out.println(data.replaceAll("\\{\\d+\\}", "%s_"));
1 голос
/ 21 июня 2011
String str      =   "{0}something{1}-{2}-something";
String clean    =   str.replaceAll("(\\{\\d+\\}-?)", "%s_");
System.out.println(clean); // outputs: %s_something%s_%s_something
1 голос
/ 21 июня 2011
String result = MessageFormat.format("{0}something{1}-{2}-something", "%s_", "_%s", "%s");
0 голосов
/ 21 июня 2011

Рассмотрите возможность использования MessageFormat.- http://download.oracle.com/javase/6/docs/api/java/text/MessageFormat.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...