2011-02-07 5 views
0
public void convertStrings() { 
    for (int counter = 0; counter < compare.length; counter++) { 
      compare[counter] = compare[counter].replace('*','_'); 
      compare[counter] = compare[counter].replaceAll("_",".*"); 
      compare[counter] = compare[counter].replace('?', '.'); 
    } 
    // System.out.printf("%s", Arrays.toString(compare)); 
} 
public void compareStrings() { 
    for (int counter = 0; counter < data.length; counter++) { 
     for (int counter1 = 0; counter1 < compare.length; counter1++) { 

      if (data[counter].matches(compare[counter1]) == true) { 
       System.out.printf("%s ", data[counter]); 
      } 

     } 
     System.out.println(); 
    } 
} 

}java.util.regex.PatternSyntaxException:ヌル(java.util.regex.Patternの中に)エラー

私は何をしようとしているが、私には、入力のいずれかの*を置き換えている*そう。文字列と前の文字とを比較すると、前の文字は無視されます。また、私は "?"プレースホルダ値 "。"に変換します。しかし、コンパイルされたコードを実行すると、文字列が特殊文字を通常の文字に変換するため、このエラーが発生します。関数を実行するためにコンパイラにこれらの特殊文字を登録させるにはどうすればよいですか? 、私は、最も可能性の高い説明はcompare[counter1]が実際にnullであるということであるならば、エラーがラインから

if (data[counter].matches(compare[counter1]) == true) 

を投げされていることを想定しています

compare[counter] = compare[counter].replaceAll("\\*",".*").replaceAll("\\?", "."); 

答えて

1

ちょうどに行を変更しますそれは値を含んでいません。

0