Разделение и замена Java не работают должным образом, удаляя больше, чем ограничители регулярных выражений - PullRequest
0 голосов
/ 21 ноября 2018

Я писал программу и заметил, что в некоторых случаях я сталкивался с исключением.Я выделил проблему для своих методов разбиения и замены и провел тест основного метода.Код выглядит следующим образом.

public class tester
{
 public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.setSize(300,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        JPanel panel = new JPanel();
        JPanel panel2 = new JPanel();
        frame.add(panel, BorderLayout.CENTER);
        //create text box
        JTextArea textArea = new JTextArea(15,10);
        textArea.setEditable(true);
        textArea.setText("");
        panel.add(textArea);
        frame.setVisible(true);
        frame.add(panel2, BorderLayout.SOUTH);
        String s = textArea.getText().replace("[a-z]", "");
        String[] parts = s.split("\\=|\\-|\\/|\\*|\\+|\\[a-z]");
        JButton b = new JButton("something");
        panel2.add(b);
        b.addActionListener(new ActionListener(){  
    public void actionPerformed(ActionEvent e){  
        textArea.setText(s);
        }  
    });
}
}

В частности, в строке, в которой

        String s = textArea.getText().replace("[a-z]", "");
        String[] parts = s.split("\\=|\\-|\\/|\\*|\\+|\\[a-z]");

используются ограничители регулярных выражений.

Ввод тестового ввода в textArea с помощью строки, такой как 123asdv1 +asd-

Ожидаемым выводом после нажатия кнопки должна быть строка: 1231 + - при вызове s.

Однако фактический вывод после нажатия на самом деле является пустой строкой, пустой.

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

Было бы очень полезно, есликто-то может сказать мне, что я сделал неправильно, моя оригинальная программа предназначена для извлечения всех чисел между специальным символом, таким как + или -, для сохранения и использования для вычисления.Если была обнаружена недопустимая операция, она напечатала бы сообщение об ошибке в текстовой области и продолжила бы с того места, где она остановилась до ошибки, именно здесь я столкнулся с проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...