2014-03-27 255 views
0

我有一个字符串表示由32个字符组成的“|”和“:”。检查一个字符串是否只包含某些字符

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

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

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

    else 
    { 
     return false; 
    } 

我知道还有其他的事情,我需要以验证它作为一个条码检查,但我只要求用于检查给定字符串中的符号的目的。

我是一名初学者程序员,所以非常感谢您的帮助!

+1

你知道正则表达式又名'regex'吗?可能值得研究 –

回答

0
boolean isBarCode = barCode.matches("[\\|\\:]*"); 
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; 
    } 
} 
0

由于您所需要的条形码恰好32个字符,只包括了:和|字符,你应该使用长度和正则表达式检查的组合:

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