Java'da "(3+5)x + x^(6/2)"
gibi bir dizim varsa, parantez içindeki tüm ifadeleri değerlendirmelerle nasıl değiştirebilirim, "8x + x^3"
dizesini almak için?Parantez içinde ifadeyi dize içinde ifade etme
-2
A
cevap
1
Ne yapmaya çalıştığınıza bağlı olarak değişir. Daha karmaşık durumlar için ANTLR gibi bir ayrıştırıcı jeneratörü kullanmanız/kullanmanız gerekir. İfadeler daha karmaşık değilse, o zaman örnekleriniz (basit aritmetikler), yalnızca ifadeleri JavaScript/Nashorn ile analiz etmeye çalışabilirsiniz.
yapabileceğini Use the backreference in a regex to replace a text dynamically çözümünü kullanarak: JavaScript çözümü/Ağır yavaş ise
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
}
, bağlantıyı siz de ayrıştırmak başladı.
İlgili konular
- 1. Parantez içinde olmayan virgüllere bölünmüş düzenli ifade
- 2. Virgüllerin Javascript'te parantez içinde davranışı
- 3. Bash içinde parantez içinde (!) Nasıl kullanılır?
- 4. PHP/REGEX: Parantez içinde bir ip alın
- 5. dize içinde
- 6. tip değişimi (ifade içinde
- 7. jsp içinde giriş ifadesi içinde koşullu ifade
- 8. Parantez içinde olmayan virgüller nasıl bölünür?
- 9. `exit 'parantez içinde</ a0> içinde komut dosyası çıkmıyor
- 10. Düzenli ifadeyi lxml xpath içinde nasıl kullanılır?
- 11. lua içinde html etiketleri içinde dize Bul
- 12. İstek Parametresi ifade js içinde
- 13. JSON Verileri Parantez İçinde Neden Var?
- 14. Biçim Negatif sayılar parantez içinde ANCAK $ sembolüyle?
- 15. Parantez içinde birden çok deyimi kaydırma
- 16. Delphi içinde dize bölme
- 17. int mysql içinde dize
- 18. Nesne içinde kayan dize
- 19. Python dize içinde ... sözdizimi
- 20. Bir dize içinde "" 'değiştiriliyor
- 21. SSIS Posta Görevi Gönderme - değişken içinde bir ifadeyi geçirme
- 22. Çoklu dize değiştirmeleri (aynı dize içinde)
- 23. awk stumper: bir alan içinde normal ifadeyi değiştirme
- 24. Bir div içinde hareket etmeden div içinde hareket etme
- 25. Scala'da kare ifade etme
- 26. Ar gsub kullanarak parantez çifti içinde bir şey çıkarmak
- 27. Bir dizeyi bir regex kullanarak parantez içinde nasıl değiştirebilirim?
- 28. dize içinde onaltılık dize içine gir. Format
- 29. T-SQL LIKE numarası veya boş dize köşeli parantez içinde nasıl oluşturulur?
- 30. tsql dize içinde son "ortaya çıkma"
Yardımlarınız için çok teşekkür ederim! – nilcit