2011-02-07 11 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) ошибка

то, что я пытаюсь сделать, это заменить любой * в моем входе а * так что, когда я сравниваю строку с чем-либо раньше, она игнорирует предыдущие символы. Кроме того, я конвертирую «?» в значение-заполнитель ".". Однако, когда я запускаю скомпилированный код, я получаю эту ошибку, потому что строка преобразует специальные символы в обычные буквы. Как заставить компилятор регистрировать эти специальные символы для выполнения функции?

ответ

1

Просто измените строки:

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

Я предполагаю, что ошибка, выбрасываемые из линии

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

Если да, то наиболее вероятным объяснением является то, что compare[counter1] на самом деле null, то есть он не содержит значения.

Смежные вопросы