标题不言而喻。我正在尝试创建一个使用基本编码集成多项式函数的计算器,而不仅仅是为数学运算符掏出来为我做:)。我没有走得太远,直到我撞墙,因为我无法找到方法:在原始字符串中创建数字的子字符串,直到达到非数字字符。即如果字符串是123x,我想创建一个123的子字符串,没有'x'。这是我到目前为止所得到的:
public static void indefinite()
{
int x = 0;
System.out.print("Enter your function to integrate:\n F ");
Scanner input = new Scanner(System.in);
String function = input.nextLine();
String s1 = "";
for (int i = 0; i < function.length(); i++)
{
s1 = s1 + function.substring(x, i+1);
x = i+1;
}
}
这看起来有点荒谬,但基本上,如果字符串'function'是32x ^ 4,我希望子字符串为32.我会自己弄清楚其余部分,但这部分我似乎无法做到。
P.S。我知道for循环的重复变量是错误的,如果我正在查看超过2x ^ 3的函数,它不应该重复到字符串的结尾。我还没有试图解决这个问题,所以我确保它只做了一部分。
答案 0 :(得分:2)
您可以将字符串拆分为字母数字标记,如下所示:
str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
例如,&#34; 123x54y7z&#34;将返回[123, x, 54, y, 7, z]
答案 1 :(得分:1)
使用replaceAll()
“提取”它:
String number = str.replaceAll("\\D.*", "");
这将取代第一个非数字及其后的所有内容(实际上删除它),只留下数字。
您也可以直接转到数字原语,而不必使用String
变量,如果您愿意(像我一样)拥有更少的代码:
int number = Integer.parseInt(str.replaceAll("\\D.*", ""));