当前位置: 首页 > 知识库问答 >
问题:

字符串仅接受某些字符

裴弘
2023-03-14
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.println("Enter Code");

        String code = input.next();
    }

    public static boolean isValidCode (String code) {

    }
}

当我尝试对输入进行限制时,我在java中遇到了很多麻烦。在此示例中,我需要字符串代码仅接受$%等符号。我如何检查以确保没有数字、字母或其他符号?谢谢

共有3个答案

东郭元魁
2023-03-14

使用字符类。

以下是您的代码:

public class Hello {




    public static void main(String[] args) {


    Scanner input = new Scanner(System.in);
    System.out.println("Enter Code");

     String code = input.next();
     char c = code.charAt(0);
    if( (!Character.isDigit(c)) && (!Character.isLetter(c) && (!Character.isWhitespace(c)))){

        if(c == '%' || c=='$'){

            System.out.println("Its what u want");
        }else{
            System.out.println("Not what u want");
        }
    }else{
        System.out.println("Not what u want$");
    }


     }



}
任飞龙
2023-03-14
public static boolean isValidCode(String code) {
    return code.matches("[$%]*");
}

正如您在regex javadoc中看到的,尖括号表示您可以在封闭字符(在您的情况下为$和%)之间进行选择;*说它必须出现0次或更多次。

公羊灿
2023-03-14

这将使包含除$和/或%以外的任何内容的字符串无效:

public static boolean isValidCode (String code) {
    return code.matches("^[$%]*$");
}

如果您还要求字符串不为空,请将*更改为。如果您需要接受其他字符,只需将它们添加到字符类列表中(方括号之间的字符)。

如果要多次进行测试(在您发布的代码中不是这样),那么预编译模式会更有效:

private static final Pattern p = Pattern.compile("^[$%]*$");

public static boolean isValidCode (String code) {
    return p.matcher(code).matches();
}

(对代码的调用匹配(…) 只是执行上述操作的一种方便方法。)

 类似资料:
  • 问题内容: 我正在考虑使用删除字符串中的某些字符。目前尚不清楚将要删除哪些字符(即我想删除哪些字符),但是我会假定任何字符都是有效的(例如和之类的东西,等等)。 我遇到了http://www.java-tips.org/java-se-tips/java.lang/strip-certain-characters- from-a-string.html, 但是肯定有比遍历每个字符更好的方法… 有什

  • 问题内容: 在Python中,如何检查字符串是否仅包含某些字符? 我需要检查仅包含a..z,0..9和的字符串。(句号),没有其他字符。 我可以遍历每个字符并检查字符是a..z还是0..9或。但这会很慢。 我现在不清楚如何使用正则表达式进行操作。 这个对吗?您可以提出更简单的正则表达式还是更有效的方法? 问题答案: 决赛(?) 答案,包装在函数中,带有注释的交互式会话: 注意:在此答案中还有一个比

  • 我正在编辑从tesseract ocr收到的一些电子邮件。 以下是我的代码: 但输出不正确。 输入: 输出: 但是当我在每次替换后将结果赋给一个新的字符串时,它工作得很好。为什么在同一个字符串中连续赋值不起作用?

  • 下面是关于如何限制字符输入长度的代码 可以通过

  • 问题内容: 我想创建JTextField,输入字符限于“ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYWZZ0123456789 +&@#/%?=〜_- |!:,。;”之类的输入字符。所以我尝试覆盖 但这不是我想要的,因为用户无法再按ctrl-c ctrl-v ctrl-x …所以我添加了 到if条件,但现在用户可以粘贴不适当的输入,即’(’

  • 问题内容: 我正在尝试从文本文件中读取文本,读取行,删除包含特定字符串的行(在这种情况下为“坏”和“顽皮”)。我写的代码是这样的: 我这样写,但没有成功。 重要的一件事是,如果文本的内容是这样的: 我不希望输出有空行。所以不喜欢: 但是像这样: 我应该从上面的代码中编辑什么? 问题答案: 您可以像这样使代码更简单,更易读 使用上下文管理器和任何。