如果我有一个具有以下字符序列的键:_(some number)_1
。我怎样才能返回 (some number)
。
例如,如果键是 _6654_1
,我只需要值 6654
。真正让我感到困惑的问题是数字可以是任意长度,例如 _9332123425234_1
,在这种情况下,我只需要 9332123425234
。
这是我到目前为止尝试过的:
Pattern p = Pattern.compile("_[\\d]_1");
Matcher match = p.matcher(request.getParameter("course_id"));
但这不会涵盖中间数字可以是任何数字(不仅仅是四位数字)的情况吗?
最佳答案
您可以只计算出 indexOf('_')
然后使用 substring
。不需要正则表达式。
...但是由于您要求的是正则表达式,所以您可以:
import java.util.regex.*;
class Test {
public static void main(String[] args) {
String str = "_6654_1";
Pattern p = Pattern.compile("_(\\d+)_1");
Matcher m = p.matcher(str);
if (m.matches())
System.out.println(m.group(1)); // prints 6654
}
}
(这里是用于比较的substring
方法:)
String str = "_6654_1";
String num = str.substring(1, str.indexOf('_', 1));
System.out.println(num); // prints 6654
最后的解决方案是使用简单的 split("_")
:
String str = "_6654_1";
System.out.println(str.split("_")[1]); // prints.... you guessed it: 6654
关于java - 如何获取下划线之间的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407785/