簡體   English   中英

檢查字符串是否僅包含某些字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM