2016-06-24 6 views
0

Я хочу проверить идентификатор студента в соответствии с этим форматом: SLIOP-S-001 ИЛИ SLIOP-WS-1004. Я пробовал приведенный ниже код, и он не работает. Может ли кто-нибудь помочь мне найти ошибку в коде? Благодарю.Как совместить значение Jtextfield с шаблоном?

private void studentidKeyTyped(java.awt.event.KeyEvent evt) {         
    char s=evt.getKeyChar(); 

    String sid = "^[SLIOP]+[-]+[S||WS]+[-]+[0-9]{6}"; 
    Pattern pattern = Pattern.compile(sid); 
    Matcher matcher = pattern.matcher(String.valueOf(s)); 

    if (!matcher.matches()) { 
     evt.consume(); 
    } else { 
     JOptionPane.showMessageDialog(null,"Valid ID"); 
    } 
}   

ответ

1

Ваш не совсем правильно, чтобы соответствовать вашим входы

Вот что это может выглядеть

String sid = "^SLIOP-(S|WS)-(\\d)+$"; 
  • ^: Начало строки
  • SLIOP-: Матчи SLIOP- Litterally
  • (S|WS): Соответствует одному из S или WS
  • -: Матчи - Litterally
  • (\\d)+: Находит несколько номеров подряд
  • $: Конец строки
+0

До сих пор не работает. – lakshi

+0

@lakshi Это работает для меня, старайтесь работать на ваших входах. Попробуйте обрезать их, например. –

+1

Большое спасибо. Я отлично работаю. – lakshi

2

Вы проверяете, если один символ не может сравниться с целой моделью, она просто не может работать таким образом, вам нужно проверить всю String ни одного символа.