多项式字符串 - 识别常量

问题描述

在读取像“25x^2 + 12x^-10 - 3 - 73x^8”这样的多项式时,我想定位常量(在本例中为“3”)并通过附加“x^0”来操作它。我对如何附加它有一个很好的想法,但不确定如何实际识别多项式中的常量子串。

一种可能的方法是手动添加带有 str.contains("3+") / str.contains("3-") 的 if 语句。然而,这只是对解决方案进行硬编码。

所以,我想知道是否有某种内置方法或正则表达式可以使用。我在思考 str.contains("{1-999}+")str.contains("{1-999}-") 的思路,它们识别出指定范围内的整数,后跟一个 + 或 - 符号。

这正是我要找的:

if(poly.contains("{1-999}+")) {
     poly = poly.replace("x+","x^0+");
} 
if(poly.contains("{1-999}-")) {
     poly = poly.replace("x+","x^0-");
} 

解决方法

您可以使用正则表达式将前后的所有连续数字替换为空格(除非它们位于字符串的开头或结尾)。

String str = "25x^2 + 12x^-10 - 3 - 73x^8";
System.out.println(str.replaceAll("(?<=^| )\\d+(?= |$)","$0x^0"));