2016-11-01 1 views
1

EDIT: У меня есть jFrame с jLabel и jTextField и jButton.Как разбить число и слово, которое полностью (как: 5John, 12Annie, 32Oliver) и печатает их отдельно

JLabel: --->, который показывает "Автор ID", который автоматически увеличивающиеся 1 на 1.

JTextField: ---> пользователю ввести "Имя автора"

JButton: - -> при нажатии, он скопирует текст jLabel (автоматически увеличивая «Идентификатор автора») и текст в jTextField (который имеет имя пользователя, введенный пользователем) в Системный буфер обмена, как показано ниже, и jFrame будет располагаться после нажатия кнопки JButton.

Это код, в котором тексты из jLabel и jTextfield копируют в системный буфер обмена.

String authorId = jLabel2.getText(); 
    String authorName = jTextField1.getText(); 

    String both = authorId + authorName; 

    StringSelection stringSelection = new StringSelection(both); 

    Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); 
    clpbrd.setContents(stringSelection, null); 

    this.dispose(); 

если мы выводим текст из буфера обмена в разные промежутки времени, когда пользователь вводит имена на JTextField, он будет печатает как:

1John, 2Nick, 3Harold, .......... .., 25Sarah, ......., 104Marie, ..... и т. Д.

Но я не могу разделить числа и Слово (имя) и печатать их отдельно. Я пробовал это, но это не сработало.

try { 
     String data =(String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); 
     System.out.println(data); 

} catch (UnsupportedFlavorException ex) { 
     Logger.getLogger(FindAuthor.class.getName()).log(Level.SEVERE, null, ex); 
} catch (IOException ex) { 
     Logger.getLogger(FindAuthor.class.getName()).log(Level.SEVERE, null, ex); 
          } 

Мне нужно разделить число и слово и распечатать их отдельно.

+2

Upvoted. Это так легко сделать в C. Я предполагаю, что Java - это один шаг вперед и два шага назад. – Bathsheba

+0

Возможный дубликат http://stackoverflow.com/a/8270824/5395773 – Venkat

+0

http://stackoverflow.com/questions/8270784/how-to-split-a-string-between-letters-and-digits-or- между цифрами и буквами –

ответ

1

вы можете использовать регулярное выражение, например:

String example = "104Marie"; 
    Pattern p = Pattern.compile("(\\d+)(\\w+)"); 
    Matcher m = p.matcher(example); 

    if (m.find()) { 
     // id 
     System.out.println(m.group(1)); 
     // name 
     System.out.println(m.group(2)); 
    }