2016-08-24 1 views
1

I-Lösung, wie unten in Java-Code wollenErsetzen Zeichenfolge dynamisch Regex in Java-Code mit

String InputStr = „Dies ist ein Beispiel @ hostname1 @ host-name2, wo ich wie die Zeichenfolge konvertieren möchten: @Test host- @ test1 zum Formatieren, dh Dollar, gefolgt von offenen Klammern, Zeichenketten und Klammern. ";

Output String Ich brauche als

Ausgabe: „Dies ist ein Beispiel $ {hostname1} $ {host-name2}, wo ich die Zeichenfolge wie umwandeln möchten: $ {Test} Host - $ {test1} zu Format, dh Dollar gefolgt von offenen Hosenträgern, String und engen Hosenträgern. ";

Ich habe versucht, unten wie

public void regEx(String intputStr){ 
     String pattern = "\\S(@)\\S+"; 
     Pattern r = Pattern.compile(pattern); 
     Matcher m = r.matcher(commands); 

     String replacePattern = " \\$\\{\\S+\\} "; 
     int i=0; 

     while(m.find()) { 
      Pattern.compile(pattern).matcher(intputStr).replaceAll(replacePattern); 
      // System.out.println(m.group(i)); 
      //i++; 
     } 
     // System.out.println(i); 
     System.out.println(intputStr); 
    } 

Aber ich bekomme Ausnahmen und nicht in der Lage zu gehen. Bitte helfen Sie.

Antwort

0

Sie können mit dem folgenden Einzeiler weg:

inputStr = inputStr.replaceAll("@(.*?)\\s", "\\${$1} "); 

Dies entspricht dem regulären Ausdruck @(.*?)\\s, die alles zwischen der at-Symbol und dem nächsten Raum erfasst, und ersetzt sie durch die Formatierung, die Sie wollen.

String inputStr = "This is a sample @hostname1 @host-name2 where I want to convert the string like :@test [email protected] to format i.e dollar followed by open braces, string and close braces."; 
// add space to match term should it occur as the last word 
inputStr += " "; 
inputStr = inputStr.replaceAll("@(.*?)\\s", "\\${$1} "); 
inputStr = inputStr.substring(0, inputStr.length()-1); 

System.out.println(inputStr); 

Ausgang:

This is a sample ${hostname1} ${host-name2} where I want to convert the string like :${test} host-${test1} to format i.e dollar followed by open braces, string and close braces. 
+0

Dies ist so Briiliant. Danke für deine Lösung. –

Verwandte Themen