在Java中获取字符串整数结尾的最佳方法?
给定一个由字母、数字和下划线组成的标识符foo,我想在最后一个整数上拆分字符串。示例:在Java中获取字符串整数结尾的最佳方法?,java,regex,string-parsing,Java,Regex,String Parsing,给定一个由字母、数字和下划线组成的标识符foo,我想在最后一个整数上拆分字符串。示例: "hello" => "hello", "" "hello0" => "hello", "0" "hello001" => "hello", "001" "h123ello123" => "h123ello", "123" 我想我可以使用正则表达式来提取此信息,但不确定这是最干净的方法(如果是,则该表达式将是什么样子)。将此正则表达式用于您的模式。matcher(string)方法调
"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”和“
似乎不起作用。你期望什么?我收回我说的话,我是在错误地调用它。这确实有效,我投了更高的票。我选择了另一个答案,因为我发现它更简单,更容易实现。