2017-08-17 96 views
2

特定的字符集我得到它可以包含一個字符串:如何知道如果一個字符串包含在Java中

  • 純文本(對於一個問題或例如電子郵件的答覆);

  • 只有數字和「=」;

  • 只有數字和「[」「]」「,」。

我試圖找到一種方法,這些案件中的歧視,特別是,要能夠知道它是否包含純文本以及數字和其他字符,如該字符串只屬於一個情況下(即「=」或「[」我想把它放在第一個案例中,而如果它只包含數字和「=」我想把它放在第二個案例中)。

我嘗試使用類似:

if (text.contains("[") && text.contains("]") && text.contains(",")) 
     //other code 

但在這種情況下,它可能是文本和這些字符或數字和這些字符,所以如果我在第一或第二是我不能決定案件。

感謝您的幫助。

+3

聽起來像是[正則表達式]工作(https://docs.oracle.com/javase/tutorial/essential/regex /) – Alden

+1

研究正則表達式 - 特別是「角色類」功能。 – yshavit

+3

你應該用'&&'替代'&' – Titulum

回答

4

這可以很容易地通過使用正則表達式來解決。看看here

你的情況:這裏是正則表達式,我會用:

只有數字和「=」;

s.matches("^[0-9|=]+$"); 

只有數字和「[」「]」「,」。

s.matches("^[0-9|\[|\]|,]+$"); 

而第一種情況是所有其餘的!

!s.isEmpty(); 
+0

感謝您的幫助!第二個雖然顯示錯誤「無效的轉義序列(有效的是\ b \ t \ n \ f \ r \」\'\\)。 – giovandrea

+0

這很奇怪。也許試試看refiddle吧。這是我的猜測:http://refiddle.com/refiddles/5995c7d875622d0c24250000 – Titulum

4

轉到用於正則表達式

對於數字:

System.out.println(data.matches("[0-9]+")); 

對於數字和 '='

System.out.println(data.matches("[0-9=]+")); 

對於數字和方括號和,

System.out.println(data.matches("[0-9\\[\\],]+")); 

對於純文本:

System.out.println(data.matches("[a-zA-Z]+")); 

其中data是您輸入的文本

相關問題