In Java, wenn ich eine Zeichenfolge wie "(3+5)x + x^(6/2)"
habe, wie kann ich alle Ausdrücke in Klammern mit ihren Bewertungen ersetzen, um die Zeichenfolge zu erhalten?Ausdrücken Ausdruck in Klammern, in String
-2
A
Antwort
1
Es hängt davon ab, was Sie versuchen zu tun. Für komplexere Fälle könnten/sollten Sie einen Parser-Generator wie ANTLR verwenden. Wenn die Ausdrücke nicht komplexer sind als Ihre Beispiele (einfache Arithmetik), könnten Sie einfach versuchen, die Ausdrücke mit JavaScript/Nashorn zu analysieren.
Mit der Lösung von Use the backreference in a regex to replace a text dynamically Sie tun können:
public static void main(String[] args) throws ScriptException {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
String x = "(3+5)x + x^(6/2)";
// can also be extended to expressions like 3+5*5 with
// Pattern.compile("\\(\\d+([+/*-]\\d+)+\\)")
Pattern simpleArithmeticExpr = Pattern.compile("\\(\\d+[+/]\\d+\\)");
Matcher matcher = simpleArithmeticExpr.matcher(x);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
String expr = matcher.group();
String evaluatedExpr = String.valueOf(engine.eval(expr));
matcher.appendReplacement(sb, evaluatedExpr);
}
matcher.appendTail(sb);
System.out.println(sb); // 8x + x^3
}
Wenn die Javascript-Lösung zu verlangsamen/Schwergewicht ist, können Sie auch es selbst nicht analysieren.
Verwandte Themen
- 1. der String in Klammern
- 2. Klammern um ganze Zahlen in einem String
- 3. String Matching mit regulären Ausdrücken
- 4. Extract String in verschachtelten Klammern
- 5. Regulärer Ausdruck für Klammern in Anführungszeichen
- 6. Escape-Ausdruck geschweifte Klammern
- 7. Komma getrennt String Array mit regulären Ausdrücken
- 8. Ausdrücken Ausdruck in Varchar Spalte direkt in der "Select" -Anweisung
- 9. regulären Ausdruck Auswertung in String-Matching
- 10. verschachtelter Text in regulären Ausdrücken
- 11. Exponent in einem plotmath Ausdruck
- 12. GroupBy in Lambda-Ausdrücken
- 13. C# Regulärer Ausdruck, um Informationen in Klammern zu erhalten
- 14. 'zwei' Regulärer Ausdruck zwischen zwei regulären Ausdrücken
- 15. Konvertiere einen String in einen regulären Ausdruck
- 16. Tilde-Operator in regulären Ausdrücken
- 17. Kontra in Ausdrücken
- 18. Entfernen von Text in Klammern (Klammern in Klammern prob)
- 19. Nebenwirkungen in generischen Ausdrücken
- 20. Unterschied zwischen String [] (eckigen Klammern) und String (ohne eckige Klammern) in Java
- 21. PCRE Match-String zwischen zwei Klammern
- 22. Anker in regulären .NET-Ausdrücken
- 23. Gruppierung in regulären Ausdrücken in Javascript
- 24. Parsing Text in Klammern mit regexp
- 25. Suchen und n-te Auftreten von [klammert] Ausdruck in String
- 26. C# Prüfen, ob Ausdruck Klammern gültig
- 27. Fragezeichen Operator in Ausdrücken
- 28. Gruppierung in regulären Ausdrücken
- 29. Smarty: String-Variable enthält Klammern
- 30. Regulärer Ausdruck Strings in eckigen Klammern oder doppelte Anführungszeichen
vielen dank für ihre hilfe! – nilcit