2014-01-10 56 views
0

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

+0

正则表达式会为你工作? – Justin

回答

0

您将需要使用正则表达式。

Here是一个很好的教程。

0

正则表达式是很好的通用解决方案。

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

String s; // Assign somewhere 
boolean hit = s.startsWith("M_16x16_") 
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 
//