多项式字符串 - 识别常量
Polynomial String - Identify Constants
在读取像“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-");
}
您可以使用正则表达式将所有连续的数字替换为前后的 space(除非它们位于字符串的开头或结尾)。
String str = "25x^2 + 12x^-10 - 3 - 73x^8";
System.out.println(str.replaceAll("(?<=^| )\d+(?= |$)", "[=10=]x^0"));
在读取像“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-");
}
您可以使用正则表达式将所有连续的数字替换为前后的 space(除非它们位于字符串的开头或结尾)。
String str = "25x^2 + 12x^-10 - 3 - 73x^8";
System.out.println(str.replaceAll("(?<=^| )\d+(?= |$)", "[=10=]x^0"));