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

从字符串Java中排除特殊字符,java,special-characters,Java,Special Characters,我对Java非常陌生,我正在为学校编写一个加密、解密工具,我想问一下我如何才能做到这一点 排除特殊字符,我已经尝试过像“contains”这样的方法,但我并没有真正起作用。我的代码如下所示: public void bEncode\u ActionPerformed(ActionEvent evt){ 字符串输入=jTextField1.getText(); 字符串输出=”; 字符串Specialcharacters=“!§$%&/()=?,-+*:;”; jTextField2.setTex

我对Java非常陌生,我正在为学校编写一个加密、解密工具,我想问一下我如何才能做到这一点 排除特殊字符,我已经尝试过像“contains”这样的方法,但我并没有真正起作用。我的代码如下所示:


public void bEncode\u ActionPerformed(ActionEvent evt){
字符串输入=jTextField1.getText();
字符串输出=”;
字符串Specialcharacters=“!§$%&/()=?,-+*:;”;
jTextField2.setText(“编码…”);
字符c;
int Number=(整数)jSpinner1Model.getNumber();
int asc;
对于(int i=0;i90)asc=asc-26;
输出=输出+(字符)asc;
}否则{
}  
}
jTextField2.setText(输出);
}

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

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

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

如果只需要保留字母和数字,可以使用正则表达式简化代码,如下所示:

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
输出:

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

在旁注上,您应该始终遵循,例如,
Input
应命名为
Input

欢迎使用stackoveflow。参观并获取您需要使用正则表达式的第一个徽章。
。包含(字符串)
将检查整个子字符串
!§$%&/()=?,-\u+*
在输入中,而不是它的每个单独字符中。if(!input.contains(Specialcharacters){应该是if(!input.contains(Specialcharacters)){但除此之外,“Specialcharacters”是一个字符串,一个字符序列。它不仅仅是一个字符。因此,您确实在尝试检查您的文本是否包含您编写的整个序列“!§$%&/()=?,-\+*:;”。