检查字符串是否仅包含某些字符

时间:2014-03-27 22:41:10

标签: java string symbols delimiter

我有一个代表32个字符长条形码的字符串,由" |"组成。和":"。

我想检查任何给定字符串的有效性,以确保它是条形码。其中一项测试是检查它包含的唯一符号是上面提到的两个符号。我怎么检查呢?

我首先使用的是分隔符,但我认为这不是正确的方法。

public boolean isValidBarCode (String barCode)
{
  barCode.useDelimiter ("[|:]");
  if (barCode.length() == 32)
  {
       return true;
  }         

  else 
  {
      return false;
  }

我知道我需要检查其他一些东西才能将其验证为条形码,但我只是要求检查给定字符串中的符号。

我是初学程序员,非常感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

您可以使用正则表达式:

boolean correct = string.matches("[\\:\\|]+");

正则表达式的说明:它检查字符串是由1个或多个字符组成的(+后缀的字符组成)是:还是|。我们通常会写[:|]+,但由于:和(我认为)|是正则表达式中的特殊字符,因此需要使用反斜杠进行转义。并且反斜杠必须以字符串文字进行转义,因此需要双反斜杠。

或者您可以使用循环简单地编写5行算法:

boolean correct = false;
for (int i = 0; i < string.length() && correct; i++) {
    char c = string.charAt(i);
    if (c != ':' && c != '|') {
        correct = false;
    }
}

答案 1 :(得分:0)

boolean isBarCode = barCode.matches( "[\\|\\:]*" );

答案 2 :(得分:0)

由于您需要条形码长度为32个字符,并且仅包含:和|字符,你应该使用长度和正则表达式检查的组合:

boolean isCorrect = barCode.matches( "[\\|\\:]*" );
if(isCorrect && barCode.length() == 32) {
    //true case
} else {
    //false case
}