Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中获取字符串整数结尾的最佳方法?_Java_Regex_String Parsing - Fatal编程技术网

在Java中获取字符串整数结尾的最佳方法?

在Java中获取字符串整数结尾的最佳方法?,java,regex,string-parsing,Java,Regex,String Parsing,给定一个由字母、数字和下划线组成的标识符foo,我想在最后一个整数上拆分字符串。示例: "hello" => "hello", "" "hello0" => "hello", "0" "hello001" => "hello", "001" "h123ello123" => "h123ello", "123" 我想我可以使用正则表达式来提取此信息,但不确定这是最干净的方法(如果是,则该表达式将是什么样子)。将此正则表达式用于您的模式。matcher(string)方法调

给定一个由字母、数字和下划线组成的标识符foo,我想在最后一个整数上拆分字符串。示例:

"hello" => "hello", ""
"hello0" => "hello", "0"
"hello001" => "hello", "001"
"h123ello123" => "h123ello", "123"

我想我可以使用正则表达式来提取此信息,但不确定这是最干净的方法(如果是,则该表达式将是什么样子)。

将此正则表达式用于您的
模式。matcher(string)
方法调用:

^(.+?)(\d*)$
在Java中:

Pattern p = Pattern.compile( "^(.+?)(\\d*)$" );

然后使用
matcher.group(1)
matcher.group(2)
进行匹配(在调用
matcher.find()
之后)

将此正则表达式用于
模式。matcher(string)
方法调用:

^(.+?)(\d*)$
在Java中:

Pattern p = Pattern.compile( "^(.+?)(\\d*)$" );
然后使用
matcher.group(1)
matcher.group(2)
进行匹配(调用
matcher.find()
)后)

您可以使用此拆分

split("(?=\\d*$)",2);
它将在后面有字符串结尾的数字(
\\d
)上拆分(这意味着它们位于字符串结尾)。
参数
2
将结果数组的大小限制为两个元素,以防止该正则表达式在下面我标记的
|
位置进一步分裂

hello0|0|1
所以结果将是
hello
001

您可以使用此拆分

split("(?=\\d*$)",2);
它将在后面有字符串结尾的数字(
\\d
)上拆分(这意味着它们位于字符串结尾)。
参数
2
将结果数组的大小限制为两个元素,以防止该正则表达式在下面我标记的
|
位置进一步分裂

hello0|0|1
所以结果将是
hello
001


当输入为
“hello”
时,它给出的常规字符串“hello”和
似乎不起作用。你期望什么?我收回我说的话,我是在错误地调用它。这确实有效,我投了更高的票。我选择了另一个答案,因为我发现它更简单、更容易实现。当输入为
“hello”
时,它给出的常规字符串“hello”和
似乎不起作用。你期望什么?我收回我说的话,我是在错误地调用它。这确实有效,我投了更高的票。我选择了另一个答案,因为我发现它更简单,更容易实现。