使用“%”,“?”和java中的“#”查找子字符串

时间:2013-12-15 00:08:49

标签: java string contains

我正在尝试以更有效的方式查找字符串中的元素,而不是将句子转换为char数组,然后将其与其他文本进行比较,如果可以请告诉我你可能还有其他任何方法可以做到这一点,

我需要的是

Boolean b = myString.contains(important%urgent);

这应该不同于:

Boolean b = myString.contains(urgent%important);

在前面的例子中,如果单词包含在字符串中并且它们遵循特定的顺序,我想获得True值。

下一个是?

Boolean b myString.contains(friend?); //this would look for 'friend' and 'friends' or so

和最后一个#

Boolean b myString.equals(#/#/2013 #:#:#);//this would return true if the date is in 2013

我希望我能够解释自己,谢谢你的回答。

2 个答案:

答案 0 :(得分:2)

你想要正则表达式!

检查单词顺序:

Boolean b = myString.matches(".*important.*urgent.*");

注意,要严格“单词”(即不匹配“不重要”),请添加单词边界:

Boolean b = myString.matches(".*\\bimportant\\b.*\\burgent\\b.*");

要检查单词末尾的可选“s”:

Boolean b = myString.matches(".*friends?.*");

同样,要严格且不匹配“友好”,请添加单词边界:

Boolean b = myString.matches(".*\\bfriends?\\b.*");

检查数字:

Boolean b = myString.matches("\\d+/\\d+/2013 \\d+:\\d+:\\d+");

答案 1 :(得分:0)

请尝试正则表达式。

例如最后一个:

Pattern p3 = Pattern.compile("^\d{2}/\d{2}/2013\s\d:\d:\d$");
Matcher m = p3.matcher(target);
if(m.matches()) {...}