从字符串中排除特殊字符 Java

问题描述 投票:0回答:2

我对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);

  }

有什么方法可以让它工作吗?

java special-characters
2个回答
3
投票

使用正则表达式。 例如,下面这行将只从给定的字符串中提取字母和数字。

String onlyLettersAndNumbers = s.replaceAll("[^0-9A-Za-z]", "");

1
投票

如果你只需要保留字母和数字,你可以使用如下的正则表达式来简化你的代码。

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.

© www.soinside.com 2019 - 2024. All rights reserved.