在另一个字符串java中使用通配符搜索字符串值

时间:2016-05-27 12:16:04

标签: java string-matching

假设我有字符串值

String strValue1 = "This is the 3TB value"; 
String strValue2 = "3TB is the value"; 
String strValue3 = "The value is 3TB";

当用户搜索3TB*时,它应该与strValue2匹配,就像用户搜索*3TB*时那样匹配strValue1而对于*3TB它应匹配strValue3

我尝试了很多例子,但没有运气。是否有任何通配符搜索字符串?我无法使用任何外部库

3 个答案:

答案 0 :(得分:1)

您可能正在寻找Regular Expressions

既然你说你不能使用外部图书馆,我认为这可能是作业,所以在这种情况下我不会直接回答如何使用它们。

答案 1 :(得分:1)

您可以使用以下方法检查3TB*案例:

str.startsWith("3TB")

其中str是您要检查匹配的字符串。

您可以使用以下方法检查*3TB*案例:

str.contains("3TB")

答案 2 :(得分:0)

如果您能够在搜索中用*替换通配符.+。以下片段可能是一个起点。

String[] strings = {"This is the 3TB value", "3TB is the value", 
                    "The value is 3TB"};
String[] pattern = {"3TB.+", ".+3TB.+", ".+3TB"};
for (String s : strings) {
    for (String p : pattern) {
        if (s.matches(p)) {
            System.out.printf("pattern: %-7s   matches: %s%n", p, s);
        }
    }
}

输出

pattern: .+3TB.+   matches: This is the 3TB value
pattern: 3TB.+     matches: 3TB is the value
pattern: .+3TB     matches: The value is 3TB