java-如何创建子字符串直到到达非数字字符?

gev0vcfq  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(207)

标题不言自明。我正在尝试创建一个计算器,它使用基本的编码来集成多项式函数,而不仅仅是用一个数学运算符来为我做:)。我还没走多远,直到我碰到一堵墙,因为我找不到一种方法:在原始字符串中创建一个数字的子字符串,直到到达一个非数字字符。i、 如果字符串是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、 我知道for循环的repeation变量是错误的,如果我看到的函数不止是2x^3,那么它不应该重复到字符串的末尾。我还没想办法弄清楚,所以我只确定它只演了一部分。

tv6aics1

tv6aics11#

使用 replaceAll() 要“提取”它:

String number = str.replaceAll("\\D.*", "");

这会将第一个非数字和它后面的所有内容都替换为零(有效地删除它),只留下数字。
也可以直接转到数值原语,而不必使用 String 变量,如果您(像我一样)希望代码更少:

int number = Integer.parseInt(str.replaceAll("\\D.*", ""));
7uhlpewt

7uhlpewt2#

您可以在字母数字标记处拆分字符串,如下所示:

str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");

例如,“123x54y7z”将返回 [123, x, 54, y, 7, z]

相关问题