【问题标题】:Java - How to create a substring until a non-numerical character is reached?Java - 如何在达到非数字字符之前创建子字符串?
【发布时间】:2016-03-28 03:01:54
【问题描述】:

标题不言自明。我正在尝试创建一个计算器,它使用基本编码集成多项式函数,而不仅仅是抽出一个数学运算符来为我做这件事:)。直到碰壁,我才不得不走很远,因为我无法找到一种方法:在原始字符串中创建一个数字的子字符串,直到达到一个非数字字符。即如果字符串是 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。我会自己弄清楚其余部分,但这部分我似乎做不到。

附言我知道 for 循环的重复变量是错误的,如果我查看的函数不止 2x^3,它不应该重复到字符串的末尾。我还没有试图弄清楚这一点,所以我只是确保它只完成了 1 部分。

【问题讨论】:

    标签: java regex string variables numeric


    【解决方案1】:

    使用replaceAll()“提取”它:

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

    这将替换第一个非数字及其后的所有内容(实际上是删除它),只剩下数字。

    如果您喜欢(像我一样)更少的代码,也可以直接转到数字原语,而不必使用 String 变量:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-08-25
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        • 2017-02-25
        • 2013-03-01
        • 2012-02-10
        • 2018-09-04
        • 1970-01-01
        相关资源
        最近更新 更多