gpt4 book ai didi

java - 将字符串分成两部分,其中第一个仅包含数字的部分和其余部分?

转载 作者:行者123 更新时间:2023-12-02 10:27:01 25 4
gpt4 key购买 nike

字符串由以下部分组成:

  • 可选的 ASCII 数字序列。
  • ASCII 小写字母序列。

我正在尝试在一个正则表达式中进行拆分,我可以这样使用:

String string = "123abc";
var array = string.split(...);
System.out.println(java.util.Arrays.toString(array));
// prints [123, abc]

我遇到的最接近的正则表达式如下:

(?<=\d+)

示例:

String string = "123abc";
var array = string.split("(?<=\\d+)");
System.out.println(java.util.Arrays.toString(array));
// prints [1, 2, 3, abc]

从技术上讲,我可以在没有任何正则表达式的情况下完成此操作,但在这里,使用正则表达式完成很重要。

证明我可以正常完成的解决方案:

String string = "123abc";
int i = 0;
for(; i < string.length() && Character.isDigit(string.charAt(i)); i++)
;
String[] array = {
string.substring(0, i), string.substring(i)
};
System.out.println(java.util.Arrays.toString(array));
// prints [123, abc]

另一种方法是:

String string = "123abc";
String[] array = {
string.replaceAll("\\D", ""),
string.replaceAll("\\d", "")
};
System.out.println(java.util.Arrays.toString(array));
// prints [123, abc]

匹配示例:

In:                 Out:
123abc [ "123", "abc" ]
0a [ "0", "a" ]
a [ "", "a" ]

最佳答案

Pattern.split()文档说:

When there is a positive-width match at the beginning of the input sequence then an empty leading substring is included at the beginning of the resulting array. A zero-width match at the beginning however never produces such empty leading substring.

因此,使用正则表达式可能无法实现您想要实现的目标。

关于java - 将字符串分成两部分,其中第一个仅包含数字的部分和其余部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53874943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com