如果不只包含整数,我试图在String上执行一段代码。例如,如果输入是 2017 ,则不会发生任何事情;否则如果它是 2017abc ,则会执行代码块。
我已经尝试了正则表达式^[0-9]+$
,但似乎if (!keyword.matches("/^[0-9]+$/")
无法按照我的意愿运行。我检查了多个在线资源,我很确定正则表达式是正确的。
我在这里错过了什么吗?
更新
使用keywords.replaceAll("\\d", "").length() > 0
解决了问题。但仍然不确定为什么以上不起作用。
无论如何,感谢有人提前提出这个答案。 :)
答案 0 :(得分:2)
您在更新中说明的解决方法看起来不错。但是,我会尽力解决您对初始代码无法正常工作的好奇心。
我测试了你的问题陈述中给出的正则表达式:
^ [0-9] + $ 的
它似乎对我很好。基于我的快速研究,问题可能出在您在问题中稍后提到的java代码中。不需要开头和结尾的斜杠。
替换此
if (!keyword.matches("/^[0-9]+$/")
用这个
if (!keyword.matches("^[0-9]+$")
你很高兴。很高兴知道我是否遗漏了什么。
有关正则表达式和模式的广泛知识,我建议使用以下链接。
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html#regular-expressions
祝你好运。答案 1 :(得分:0)
正确的正则表达式可能是.*[^0-9].*
。如果matches()
返回true,则执行您需要执行的操作。
答案 2 :(得分:0)
试试这个
import java.util.Scanner;
public class NotOnlyIntegers
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Please enter the String");
String test=scan.nextLine();
int digit=0;
int letter=0;
for(int x=0;x<test.length()-1;++x)
{
if(Character.isDigit(test.charAt(x)))
{
++digit;
}
else if(Character.isLetter(test.charAt(x)))
{
++letter;
}
}
if(digit>0&&letter>0)
{
System.out.println("Code Executed");
}
else
System.out.println("Code Not Executed");
}
}
答案 3 :(得分:0)
它不漂亮,但为什么不让Java做这个工作:
select bi.*
from BuyInvoices bi
inner join Sellers s
on bi.SeId = s.SeId
where (bi.BIId = @biid
or @biid is null)
and (s.name like N'%'+@Name+'%'
or nullif(@Name,'') is null)
and (s.Company like N'%'+@Company+'%'
or nullif(@Company,'') is null);