Маркирование Ошибки: java.util.regex. PatternSyntaxException, повисший метасимвол '*'

Вы можете использовать чистый CSS, просто добавьте метку к флажку следующим образом:

.check_box {
    display:none;
}

.check_box + label{
    background:url('images/check-box.png') no-repeat;
    height: 16px;
    width: 16px;
    display:inline-block;
    padding: 0 0 0 0px;
}

.check_box:checked + label{
    background:url('images/check-box-checked.png') no-repeat;
    height: 16px;
    width: 16px;
    display:inline-block;
    padding: 0 0 0 0px;
}

Пример HTML:

    .check_box {
    	display:none;
    }

    .check_box + label{
    	background:url('images/check-box.png') no-repeat;
    	height: 16px;
    	width: 16px;
    	display:inline-block;
        padding: 0 0 0 0px;
    }

    .check_box:checked + label{
        background:url('images/check-box-checked.png') no-repeat;
    	height: 16px;
    	width: 16px;
    	display:inline-block;
        padding: 0 0 0 0px;
    }
<input type="checkbox" class="check_box" id="checkbox1">
<label for="checkbox1">
53
задан Cœur 12 October 2017 в 00:53
поделиться

2 ответа

Нет, проблема в том, что * является зарезервированным символом в регулярных выражениях, поэтому вам нужно избегать его.

String [] separado = line.split("\\*");

* означает «ноль или более предыдущее выражение "(см. Pattern Javadocs ), и вы не давали ему никакого предыдущего выражения, что сделало ваше выражение разделения незаконным. Вот почему возникла ошибка PatternSyntaxException .

144
ответ дан 7 November 2019 в 08:20
поделиться

Первый ответ охватывает это.

Я предполагаю, что где-то в будущем вы можете решить хранить свою информацию в другом классе / структуре. В этом случае вы, вероятно, не захотите, чтобы результаты поступали в массив из метода split ().

Вы не просили об этом, но мне скучно, так что вот пример, надеюсь, это поможет.

Это может быть класс, который вы пишете для представления одного человека:


class Person {
            public String firstName;
            public String lastName;
            public int id;
            public int age;

      public Person(String firstName, String lastName, int id, int age) {
         this.firstName = firstName;
         this.lastName = lastName;
         this.id = id;
         this.age = age;
      }  
      // Add 'get' and 'set' method if you want to make the attributes private rather than public.
} 

Тогда версия исходного кода синтаксического анализа, которую вы опубликовали, будет выглядеть примерно так: (Это сохраняет их в LinkedList, вы можете использовать что-нибудь еще, например, Hashtable и т. Д.)


try 
{
    String ruta="entrada.al";
    BufferedReader reader = new BufferedReader(new FileReader(ruta));

    LinkedList<Person> list = new LinkedList<Person>();

    String line = null;         
    while ((line=reader.readLine())!=null)
    {
        if (!(line.equals("%")))
        {
            StringTokenizer st = new StringTokenizer(line, "*");
            if (st.countTokens() == 4)          
                list.add(new Person(st.nextToken(), st.nextToken(), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken)));         
            else            
                // whatever you want to do to account for an invalid entry
                  // in your file. (not 4 '*' delimiters on a line). Or you
                  // could write the 'if' clause differently to account for it          
        }
    }
    reader.close();
}

3
ответ дан 7 November 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: