java.util.regex.PatternSyntaxException: пустая ошибка (в java.util.regex.Pattern) - PullRequest
0 голосов
/ 07 февраля 2011
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(); 
    }
}

}

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

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

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

compare[counter] = compare[counter].replaceAll("\\*",".*").replaceAll("\\?", "."); 
0 голосов
/ 07 февраля 2011

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

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

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

...