Исключить специальные символы из строки Java - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в Java, и я пишу небольшой инструмент шифрования, дешифрования для школы, и я хотел спросить, как я могу исключить из него специальные символы, я уже пробовал такие методы, как «содержит», но я не действительно работает. мой код выглядит так:


public void bEncode_ActionPerformed(ActionEvent evt) {
    String Input = jTextField1.getText();
    String Output = "";
    String Specialcharacters = "!§$%&/()=?.,-_+*:;";
    jTextField2.setText("Encoding...");
    char c;
    int Number = (Integer) jSpinner1Model.getNumber();
    int asc;
    for (int i = 0; i < Input.length(); i++) {
      if(!Input.contains(Specialcharacters){  
      c = Input.charAt(i);
      asc = (int) c;
      asc = asc + Number;
      if (asc>90) asc = asc-26;
      Output = Output + (char) asc;
      } else {

      }  
    }
    jTextField2.setText(Output);

  }

Есть ли какой-нибудь способ заставить это работать?

Ответы [ 2 ]

3 голосов
/ 07 мая 2020

Используйте регулярное выражение. Например, следующая строка будет захватывать только буквы и цифры из данной строки.

String onlyLettersAndNumbers = s.replaceAll("[^0-9A-Za-z]", "");
1 голос
/ 07 мая 2020

Если вам нужно сохранить только буквы и цифры, вы можете упростить свой код с помощью регулярного выражения следующим образом:

public void bEncode_ActionPerformed(ActionEvent evt) {
    String input = jTextField1.getText();
    jTextField2.setText("Encoding...");
    int Number = (Integer) jSpinner1Model.getNumber();
    jTextField2.setText(input.replaceAll("[\\W^_]", ""));
}

Быстрая демонстрация:

public class Main {
    public static void main(String[] args) {
        String regex = "[\\W^_]";
        System.out.println("Hello123".replaceAll(regex, ""));
        System.out.println("Hello .123".replaceAll(regex, ""));
        System.out.println("Hello&*@123".replaceAll(regex, ""));
        System.out.println("Hello!§$%&/()=?.,-_+*:;    @123".replaceAll(regex, ""));
    }
}

Вывод:

Hello123
Hello123
Hello123
Hello123

Кстати, , вы всегда должны следовать Java соглашениям об именах например, Input должно быть с именем input.

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