我正在尝试使用正则表达式检查字符串,并且只有当字符串仅包含 *h、*d、*w 和/或 *m(其中 * 可以是任何数字)时,此检查才会通过。
到目前为止我已经得到了这个:
Pattern p = Pattern.compile("([0-9]h)|([0-9]d)|([0-9]w)|([0-9]m)");
Matcher m = p.matcher(strToCheck);
if(m.find()){
//matching succesful code
}
Run Code Online (Sandbox Code Playgroud)
它可以检测检查的字符串中是否存在任何数字字母组合,但如果输入是“12x5d”,它也可以工作,因为其中有“5d”。我不知道这是代码问题还是正则表达式问题。有办法实现我想要的吗?
编辑:感谢您到目前为止的回答,但根据要求,我会尽力澄清一下。像“1w 2d 3h”或“1w 1w”这样的字符串是有效的并且应该通过,但是像“1w X 2d 3h”、“1wX 2d”或“wd h”这样的字符串应该失败。
这是一个愚蠢的问题,但我不知道如何实现这一目标.
我有一个对象和一个向量.在执行期间的设定时间,我需要将此对象放在向量中并使用新对象覆盖此对象.我现在有这个,
std::vector<Cube*> cubes;
Cube* workingCube = new Cube();
...
cubes.insert(cubes.begin(), workingCube);
workingCube = new Cube();
Run Code Online (Sandbox Code Playgroud)
由于一些与指针相关的原因,我认为这是错误的.我无法弄清楚如何正确地做到这一点.
我有一个Vaadin应用程序,当你同时运行两个应用程序实例时,我会遇到一些奇怪的行为(一个在FF中,另一个在IE中).我已经删除了大多数静态对象(这些导致应用程序在与另一个打开的应用程序并行使用时完全重新加载),现在我可以正常地与UI进行交互,而无需完全重置.但是,我现在注意到我在两个接口中只获得了一个用户的数据.我假设这是由我用来管理一些数据缓存和SOAP连接的单例对象引起的.我想知道它是单独的模式本身导致奇怪的输出还是它只是我保持的静态实例对象?
我尝试将ThreadLocal与我的单例一起使用,但是当我尝试在我的单例函数中使用它们时,我的所有变量都是null.目前我的单身人士包含了这个,这可能非常糟糕,因为它不起作用.
private static ThreadLocal<SoapClient> instance = new ThreadLocal<SoapClient>();
public static synchronized SoapClient getInstance(){
if (instance.get() == null) {
instance.set(new SoapClient());
}
return instance.get();
}
Run Code Online (Sandbox Code Playgroud)
我选择了一个单例对象,所以我总是可以访问我的应用程序实例中的缓存数据和我的用户的soap连接,而我能想到的另一种方法就是在某个地方有一个静态对象,但是静态关键字似乎首先是我所有问题的原因.有什么方法可以解决这个问题还是有其他原因导致它?
有没有办法根据结果本身将SQL查询的结果表示为不同的值?例如,每次数据库中的实际值为'foo'时,我希望表中的结果显示为'bar'.