/ / bester Ansatz zum Auflösen von String-Werten - Java, String

Der beste Ansatz zum Auflösen von String-Werten - Java, String

Ich habe ein Saitenmuster unten angegeben:

{a:yyyyMMddHHmmssSSSS}_{b:name}_{c:F}

Ich muss Werte entsprechend bekommen a, b und c.

Welches ist der beste Ansatz, dies in Java zu tun.

Antworten:

2 für die Antwort № 1

Sie können Regex verwenden, um diese Informationen zu extrahieren, die Sie beispielsweise verwenden können {[a-z]:(.*?)} was bedeutet, irgendetwas dazwischen zu bekommen open { followed by any character followed by : und das Schließen }, können Sie verwenden:

String str = "{a:yyyyMMddHHmmssSSSS}_{b:name}_{c:F}";
String regex = "\{[a-z]:(.*?)\}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);

while (matcher.find()) {
System.out.println(matcher.group(1));
}

Ausgänge

yyyyMMddHHmmssSSSS
name
F

Regex-Demo


0 für die Antwort № 2

Sie können mit regulären Ausdrücken arbeiten (vielleicht modifizieren Sie sie, um besser für Sie geeignet zu sein):

String testString= "{1:201707311304}{2:name}{3:F}";
String regex = "{(w+):w+}{(w+):w+}{(w+):w+}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(testString);
if (matcher.matches()) {
String a = matcher.group(1);
String b = matcher.group(2);
String c = matcher.group(3);
System.out.println("a = " + a + ", b = " + b + ", c = " + c);
}

0 für die Antwort № 3
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
public static void main(String[]args){
String input = "{a:yyyyMMddHHmmssSSSS}_{b:name}_{c:F}";
Pattern p = Pattern.compile("\{([a-z]):(.*?)\}");
Matcher m = p.matcher(input);
while (m.find()) {
String name = m.group(1);
String value = m.group(2);
System.err.println( name + "=[" + value + "]");
}
}
}