Java 如何使用JButton删除textField中字符的所有实例?

Java 如何使用JButton删除textField中字符的所有实例?,java,string,jbutton,textfield,Java,String,Jbutton,Textfield,我无法使用JButton从文本字段中删除不需要的字符。 到目前为止,我已经尝试过使用for循环进行按钮调用,以遍历字符并将所有字母实例替换为0。然而,按钮实际上并没有做任何事情。任何帮助都将不胜感激,以下是我的代码: if(event.getSource() == call) { int length = search.getText().length(); for(int i = 0; i < length; i++) {

我无法使用JButton从文本字段中删除不需要的字符。 到目前为止,我已经尝试过使用for循环进行按钮调用,以遍历字符并将所有字母实例替换为0。然而,按钮实际上并没有做任何事情。任何帮助都将不胜感激,以下是我的代码:

    if(event.getSource() == call)
    {
        int length = search.getText().length();

        for(int i = 0; i < length; i++)
        {
            char a;
            a = search.getText().charAt(i);
            if(!(a >= '0' && a <= '9') || !(a == '#') || !(a == '*')
            {
                  search.getText().replace(Character.toString(a), "");
            }
        }
     }
if(event.getSource()==调用)
{
int length=search.getText().length();
for(int i=0;i如果(!(a>='0'&&a此行
search.getText().replace(Character.toString(a),“”);

应该是这样的

    search.setText(search.getText().replace(Character.toString(a), ""));
您可以这样做,而不是为每次迭代更改和更新字符

    String searchStr= search.getText();
    for(int i = 0; i < searchStr.length(); i++)
    {
        char a;
        a = searchStr.charAt(i);
        if(!(a >= '0' && a <= '9') || !(a == '#') || !(a == '*')
        {
             searchStr = searchStr.replace(Character.toString(a), "");
        }
    }
    search.setText(searchStr);
stringsearchstr=search.getText();
对于(int i=0;i如果(!(a>='0'&&a此行
search.getText().replace(Character.toString(a),“”);

应该是这样的

    search.setText(search.getText().replace(Character.toString(a), ""));
您可以这样做,而不是为每次迭代更改和更新字符

    String searchStr= search.getText();
    for(int i = 0; i < searchStr.length(); i++)
    {
        char a;
        a = searchStr.charAt(i);
        if(!(a >= '0' && a <= '9') || !(a == '#') || !(a == '*')
        {
             searchStr = searchStr.replace(Character.toString(a), "");
        }
    }
    search.setText(searchStr);
stringsearchstr=search.getText();
对于(int i=0;i如果(!(a>='0'&&a在使用
replace
方法时,它将返回字符串

/**
 * Replaces each substring of this string that matches the literal target
 * sequence with the specified literal replacement sequence. The
 * replacement proceeds from the beginning of the string to the end, for
 * example, replacing "aa" with "b" in the string "aaa" will result in
 * "ba" rather than "ab".
 *
 * @param  target The sequence of char values to be replaced
 * @param  replacement The replacement sequence of char values
 * @return  The resulting string
 * @throws NullPointerException if <code>target</code> or
 *         <code>replacement</code> is <code>null</code>.
 * @since 1.5
 */
public String replace(CharSequence target, CharSequence replacement) {
    return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
            this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
因此,使用“替换”时,应按以下方式使用:

` searchStr = searchStr.replace(Character.toString(a), ""); `
而不是
searchStr.replace(Character.toString(a),”;

以便可以替换该值

如果以前使用的代码
searchStr.replace(Character.toString(a),“”);
String-value-searchStr,则不会更改

此外,还可以使用正则表达式删除意外的字符。 像


当使用
replace
方法时,它将返回字符串

/**
 * Replaces each substring of this string that matches the literal target
 * sequence with the specified literal replacement sequence. The
 * replacement proceeds from the beginning of the string to the end, for
 * example, replacing "aa" with "b" in the string "aaa" will result in
 * "ba" rather than "ab".
 *
 * @param  target The sequence of char values to be replaced
 * @param  replacement The replacement sequence of char values
 * @return  The resulting string
 * @throws NullPointerException if <code>target</code> or
 *         <code>replacement</code> is <code>null</code>.
 * @since 1.5
 */
public String replace(CharSequence target, CharSequence replacement) {
    return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
            this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
因此,使用“替换”时,应按以下方式使用:

` searchStr = searchStr.replace(Character.toString(a), ""); `
而不是
searchStr.replace(Character.toString(a),”;

以便可以替换该值

如果以前使用的代码
searchStr.replace(Character.toString(a),“”);
String-value-searchStr,则不会更改

此外,还可以使用正则表达式删除意外的字符。 像


非常感谢!它正在工作,但不是按照我希望的方式工作,我只需要调整我在if上的逻辑。再次感谢!@friabb如果这回答了你的问题,那么请将其标记为正确答案。非常感谢!它正在工作,但不是按照我希望的方式工作,我只需要调整我在I上的逻辑f、 再次感谢!@friabb如果这回答了您的问题,那么请将其标记为正确答案。也非常感谢!这比逐个检查每个字符更能理清逻辑。我对正则表达式了解不多,您能解释一下什么“^[0-9*#]”正在做什么?我猜它的意思是除去由“[]”分隔的内容之外的所有内容?[^0-9*#]当插入符号显示为方括号内的第一个字符时,它将否定该模式。这可以匹配除0到9或*或#以外的任何字符。您可以从以下URL轻松获得regrex基本知识。好的,非常感谢,这是一个信息丰富的链接。非常感谢!这比逐个检查每个字符更能理清逻辑。我对正则表达式了解不多,你能解释一下“^[0-9*#]]在做什么吗?我猜它是说除去“[]”分隔的字符之外的所有字符吗?[^0-9*#]当插入符号显示为方括号内的第一个字符时,它将否定模式。这可以匹配除0到9或*或#以外的任何字符。您可以从以下URL轻松获得regrex基本知识。好的,非常感谢,这是一个非常有用的链接。要更快获得更好的帮助,请访问pos为了更快地获得更好的帮助,请发布一个。