[英]Checking if a string only contains certain characters
我有一個字符串,代表由“ |”組成的32個字符長的條形碼 和“:”。
我想檢查任何給定字符串的有效性,以確保它是條形碼。 測試之一是檢查它包含的唯一符號是否為上述兩個符號。 我該如何檢查?
首先,我使用了定界符,但我認為這不是正確的方法。
public boolean isValidBarCode (String barCode)
{
barCode.useDelimiter ("[|:]");
if (barCode.length() == 32)
{
return true;
}
else
{
return false;
}
我知道還有其他需要檢查的內容才能將其驗證為條形碼,但我只要求檢查給定字符串中的符號。
我是一個初學者,因此非常感謝您的幫助!
您可以使用正則表達式:
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;
}
}
boolean isBarCode = barCode.matches( "[\\|\\:]*" );
由於您要求條形碼的長度正好為32個字符,並且僅包含:和| 字符,則應結合使用長度和正則表達式檢查:
boolean isCorrect = barCode.matches( "[\\|\\:]*" );
if(isCorrect && barCode.length() == 32) {
//true case
} else {
//false case
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.