1 位或 2 位数字的整数
Integer in String with 1 or 2 digits
抱歉,我不知道你是否理解我想做什么,我也不是 100% 确定它是否可以通过正则表达式完成,但也许有比我想到的更好的解决方案.
我想创建一个函数,它获取一个字符串作为参数并检查该字符串中是否有整数(这是简单的部分)
该函数应该 return false,如果有一个整数,但超过 2 位数字或数字被拆分。
有效:
- foo1bar
- foobar1
- f12obar
- 12foobar
无效
- f1o2obar
- f1o23obar
所以简单的部分,1 位或 2 位数字的正则表达式没什么大不了的
[0-9]{1,2}
另一种方式,我认为是非常糟糕的代码,是遍历整个 String 并计算每个 int 的循环。我一看到一个而下一个不是 int,该字符串中的每个其他 int 都会结束。
我希望有更顺畅的方式来做到这一点。
[^0-9]*[0-9]{1,2}[^0-9]*
您会注意到,在链接的演示中,我放置了 ^
和 $
锚点并使用了 m
多行修饰符...这可能是也可能不是是否必要取决于您的实施。
本质上,我正在寻找被 0+ 个非数字包围的 1-2 个数字。
将所有非数字替换为空,然后用该数字查看原始字符串是否包含它。
String str = "foo1b2ar"; //starting string
String num = str.replaceAll("[\D]",""); //the number it contains
return str.contains(num) && num.length() <= 2; //does the original have that number all together? and is it short?
示例:
"foo1bar" -> “1” -> 原文是否包含“1”?是的
"f1o23obar" -> “123” -> 原文是否包含“123”?编号
您可以使用以下习语来匹配整个 String
与只有 1 个或 2 个数字的 1 个数字:
String[] test = {
"foo1bar",
"foobar1",
"f12obar",
"12foobar",
"f1o2obar",
"f1o23obar"
};
for (String s: test) {
// | matching the whole string
// | | non-digit, 0 or more times, reluctantly quantified
// | | | 1 or 2 digits
// | | | | non digit, 0 or more times,
// | | | | reluctantly quantified
System.out.println(s.matches("\D*?\d{1,2}\D*?"));
}
输出
true
true
true
true
false
false
抱歉,我不知道你是否理解我想做什么,我也不是 100% 确定它是否可以通过正则表达式完成,但也许有比我想到的更好的解决方案.
我想创建一个函数,它获取一个字符串作为参数并检查该字符串中是否有整数(这是简单的部分) 该函数应该 return false,如果有一个整数,但超过 2 位数字或数字被拆分。
有效:
- foo1bar
- foobar1
- f12obar
- 12foobar
无效
- f1o2obar
- f1o23obar
所以简单的部分,1 位或 2 位数字的正则表达式没什么大不了的
[0-9]{1,2}
另一种方式,我认为是非常糟糕的代码,是遍历整个 String 并计算每个 int 的循环。我一看到一个而下一个不是 int,该字符串中的每个其他 int 都会结束。
我希望有更顺畅的方式来做到这一点。
[^0-9]*[0-9]{1,2}[^0-9]*
您会注意到,在链接的演示中,我放置了 ^
和 $
锚点并使用了 m
多行修饰符...这可能是也可能不是是否必要取决于您的实施。
本质上,我正在寻找被 0+ 个非数字包围的 1-2 个数字。
将所有非数字替换为空,然后用该数字查看原始字符串是否包含它。
String str = "foo1b2ar"; //starting string
String num = str.replaceAll("[\D]",""); //the number it contains
return str.contains(num) && num.length() <= 2; //does the original have that number all together? and is it short?
示例:
"foo1bar" -> “1” -> 原文是否包含“1”?是的
"f1o23obar" -> “123” -> 原文是否包含“123”?编号
您可以使用以下习语来匹配整个 String
与只有 1 个或 2 个数字的 1 个数字:
String[] test = {
"foo1bar",
"foobar1",
"f12obar",
"12foobar",
"f1o2obar",
"f1o23obar"
};
for (String s: test) {
// | matching the whole string
// | | non-digit, 0 or more times, reluctantly quantified
// | | | 1 or 2 digits
// | | | | non digit, 0 or more times,
// | | | | reluctantly quantified
System.out.println(s.matches("\D*?\d{1,2}\D*?"));
}
输出
true
true
true
true
false
false