通过通配符搜索方法在java中搜索字符串

时间:2014-01-10 20:00:48

标签: java

鉴于M_16x16_a_b_c可以包含任何数字来代替a,b和c:我想知道什么是使用通配符搜索方法的最佳方式,以便我可以通过执行类似的操作来搜索任何可能的字符串searchfor( “M_16x16_ _ _ *”)”

3 个答案:

答案 0 :(得分:0)

您需要使用正则表达式。

Here是一个很好的教程。

答案 1 :(得分:0)

正则表达式是一种通用的解决方案。

对于您的特定示例,您可以尝试以下操作,这可能会提供更好的性能。

String s; // Assign somewhere
boolean hit = s.startsWith("M_16x16_")

答案 2 :(得分:0)

尝试这样的事情

// URL that generated this code:
// http://txt2re.com/index-java.php3?s=M_16x16_111_222_333&-13&-42&-15&-26&-14&-16&-27&-43&2&-44&3&-45&4&-5&-6 

import java.util.regex.*;

class Main
{
  public static void main(String[] args)
  {
    String txt="M_16x16_111_222_333";

    String re1="(M)";   // Any Single Word Character (Not Whitespace) 1
    String re2="(_)";   // Any Single Character 1
    String re3="(16)";  // Integer Number 1
    String re4="(1)";   // Any Single Digit 1
    String re5="(6)";   // Any Single Digit 2
    String re6="(x16)"; // Alphanum 1
    String re7="(1)";   // Any Single Digit 3
    String re8="(6)";   // Any Single Digit 4
    String re9="(_)";   // Any Single Character 2
    String re10="(\\d+)";   // Integer Number 2
    String re11="(_)";  // Any Single Character 3
    String re12="(\\d+)";   // Integer Number 3
    String re13="(_)";  // Any Single Character 4
    String re14="(\\d+)";   // Integer Number 4

    Pattern p = Pattern.compile(re1+re2+re3+re4+re5+re6+re7+re8+re9+re10+re11+re12+re13+re14,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
    Matcher m = p.matcher(txt);
    if (m.find())
    {
        String w1=m.group(1);
        String c1=m.group(2);
        String int1=m.group(3);
        String d1=m.group(4);
        String d2=m.group(5);
        String alphanum1=m.group(6);
        String d3=m.group(7);
        String d4=m.group(8);
        String c2=m.group(9);
        String int2=m.group(10);
        String c3=m.group(11);
        String int3=m.group(12);
        String c4=m.group(13);
        String int4=m.group(14);
        System.out.print("("+w1.toString()+")"+"("+c1.toString()+")"+"("+int1.toString()+")"+"("+d1.toString()+")"+"("+d2.toString()+")"+"("+alphanum1.toString()+")"+"("+d3.toString()+")"+"("+d4.toString()+")"+"("+c2.toString()+")"+"("+int2.toString()+")"+"("+c3.toString()+")"+"("+int3.toString()+")"+"("+c4.toString()+")"+"("+int4.toString()+")"+"\n");
    }
  }
}

//-----
// This code is for use with Sun's Java VM - see http://java.sun.com/ for downloads. 
//
// Paste the code into a new java application or a file called 'Main.java'
//
// Compile and run in Unix using:
// # javac Main.java 
// # java Main 
//