我有一段代码:

String textFieldContents = myJTextField.getText(); // javax.swing.JTextField

// If two consecutive pipes exist in the text, or if the text ends with a pipe, print a statement.
if(textFieldContents.matches("||") || textFieldContents.endsWith("|"))
    System.out.println("We have a winner!");


myJTextField文本字段(Swing组件)为空且其中没有文本时,将打印We have a winner!文本。为什么?

最佳答案

|是regex中的特殊字符,您需要转义这些字符以按实际方式使用它们。如果您只想查看某处是否有两个连续的管道,则还需要吸收任何前置和结尾字符。

if(textFieldContents.matches(".*\\|\\|.*") || textFieldContents.endsWith("|"))
    System.out.println("We have a winner!");

10-05 22:11