问题描述
在读取像“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"));