如何创建一个不区分大小写的JTextField,它会忽略空格?

时间:2014-05-09 16:53:01

标签: java string oop whitespace

这是我的问题。 我有一个JTextField,用户在其中输入一个String。 在动作控制器中,我正在检查写入的String是否对应于对象中包含的另一个String。 我想使JTextField案例对空格不敏感。 我将非常感谢你的帮助。

将帖子 使用字符串上的replaceAll(“\ s +”,“”)更容易解决它; 谢谢大家的及时。 各种问候。

4 个答案:

答案 0 :(得分:1)

st.replaceAll("\\s+","") 

删除所有空格和不可见字符,例如制表符和换行符。您可以在从JTextField获得的字符串上使用此字符。这是Regex

编辑string.trim()方法不是您想要的,因为它会修剪字符串开头和结尾的空白,而不是删除所有空格。< / p>

编辑2 :如果您想比较字符串,请使用string.equals(str2)

例如,如果您有一个名为st = "AAA 111"的牌照字符串而另一个名为st2 = "AAA111'的牌照,只需删除像st.replaceAll("\\s+","")st2.replaceAll("\\s+","")这样的空格,然后您就可以检查如果他们等于st.equals(st2)

答案 1 :(得分:0)

也许您可以使用FormattedTextField (docs)

JFormattedTextField textField = new JFormattedTextField(this.createFormatter("UUU-###")); // 3 any character uppercase and 3 any valid number

public MaskFormatter createFormatter(String s) {
    MaskFormatter formatter = null;
    try {
        formatter = new MaskFormatter(s);
    } catch (java.text.ParseException exc) {
        System.err.println("formatter is bad: " + exc.getMessage());
        System.exit(-1);
    }
 return formatter;
 }

答案 2 :(得分:0)

如果您希望JTextField忽略用户实时键入的空格,您可以尝试下面的代码。此解决方案将覆盖JTextField的keyTyped事件的操作。

import javax.swing.JFrame;
import javax.swing.JTextField;

import java.awt.event.*;

public class CustomListenerTextField {

    public static void main(String args[]){
        JFrame frame = new JFrame("Frame Canvas");
        frame.setSize(500, 500);


        JTextField field = new JTextField();
        field.addKeyListener(new KeyListener(){
            @Override
            public void keyTyped(KeyEvent e) {
                // TODO Auto-generated method stub
                if (Character.isWhitespace(e.getKeyChar()) || Character.isSpaceChar(e.getKeyChar())){
                    e.consume();
                }
            }
            @Override
            public void keyPressed(KeyEvent e){

            }
            @Override
            public void keyReleased(KeyEvent e) {
                // TODO Auto-generated method stub

            }
        });
        frame.add(field);
        frame.setVisible(true); 
    }
}   

答案 3 :(得分:0)

private void GuessButtonActionPerformed(java.awt.event.ActionEvent evt) { 
//This is the action event of the button.

    if (GuessTextField.getText().equalsIgnoreCase("what"))
//Ignores the case of the specified TextField.
    {
        JOptionPane.showMessageDialog(null, "You're Laaaaaame");
    }
    else
    {
        JOptionPane.showMessageDialog(null, "Guess Again");
    }
}