2015-03-11 4 views
1

У меня есть строка, введенная конечным пользователем, и эта строка должна иметь формат Showing {0} to {1} of {2}, и я хотел бы заменить параметры в фигурных скобках номерами, которые я вычисляю из бэкенд. Точно так же, как и для строк из файла свойств.
Как я могу это сделать? входКак параметризовать строку и заменить параметры

Пример:

Showing {0} to {1} of {2} 

Пример вывода:

Showing 1 to 12 of 30 
+2

Пожалуйста, покажите нам образец ввода и вывода. – TheLostMind

+1

Вам нужен класс [MessageFormat] (http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html). –

+0

и ваш код также – Vihar

ответ

4

Вы можете сделать это с MessageFormat:

String userInput = "Showing {0} to {1} of {2}"; 
String result = MessageFormat.format(userInput, 1, 12, 30); 
1

Вы можете использовать String.format()

Вот как это сделать:

int a = 1; 
int b = 12; 
int c = 30; 
String myFormattedString = String.format("Showing %d to %d of %d", a, b, c); 
// Value of myFormattedString is 'Showing 1 to 12 of 30' 
0

Вы должны использовать регулярное выражение, чтобы получить значение этих параметров.

Чтобы сделать это, вы должны рассмотреть следующий пример кода:

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

Pattern pattern = Pattern.compile("\\d+"); 
Matcher matcher = p.matcher("Showing 1 to 12 of 30"); 


int[] numbers; 
int i = 0; 
while(matcher.find()){ 
numbers[i++] = Integer.parseInt(matcher.group()); 
} 

так что теперь у вас есть все эти цифры в межд [].

0

Try регулярное выражение, как это:

public static void main(String[] args) { 
    String s = "Showing {0} to {1} of {2}"; 
    int arr[] = { 10, 20, 30 }; 
    s = s.replaceAll("(.*)(\\d)(.*)(\\d)(.*)(\\d)", "$1" + arr[0] + "$3" 
      + arr[1] + "$5" + arr[2]); 
    System.out.println(s); 
} 

O/P:

Showing {10} to {20} of {30} 
Смежные вопросы