2015-06-05 2 views
0

У меня есть строка, как some text %@ some text %@ some text где %@ - это форматирование obj-c. Мне нужно преобразовать эту строку в some text %1$s some text %2$s some text, которая является ресурсом android с форматированием.

Как это сделать, используя groovy regex?

+0

вы можете сделать '' splits' с помощью stringTokenizer', а затем 'заменить ' – Aspicas

+0

@Aspicas вы могли бы добавить фрагмент кода в качестве ответа? –

+0

, конечно, позвольте мне написать, пожалуйста, подождите. – Aspicas

ответ

2

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

def s = 'some text %@ some text %@ some text' 

def newS = 1.with { idx -> s.replaceAll(/%@/, { v -> "%${idx++}\$s" }) } 

Что дает выход:

'some text %1$s some text %2$s some text' 
0

У вас есть строка some text %@ some text %@ some text.

Вы можете разделить эту строку с помощью StringTokenizer:

Например:

String myString= "Hello world" 

//we can divide my string using space as reference on this way. 
StringTokenizer tokens = new StringTokenizer(myString, " "); 
         //here hello 
         String SplitFirst = tokens.nextToken(); 
         //here world 
         String SplitSecond = tokens.nextToken(); 

Второй пример:

String myString= "Hello:world:everybody" 

//we can divide my string using `:` as reference on this way. 
StringTokenizer tokens = new StringTokenizer(myString, ":"); 
         //here hello 
         String SplitFirst = tokens.nextToken(); 
         //here world 
         String SplitSecond = tokens.nextToken(); 
         //here everybody 
         String SplitThird = tokens.nextToken(); 

Тогда на вашем Qu estion, вы можете сделать тот же самый процесс, чтобы сделать это, но с использованием в качестве эталона %@

Если у вас есть diferents строки вы можете использовать replace изменить %@:

Например

String newString = string.replace("%@", "%1$s"); 

И позже вы можете объединить новую строку:

Опять же, Например

String NewConcatenateString= SplitFirst + SplitSecond + SplitThird...... 
Смежные вопросы