2014-10-04 33 views
0

我要驗證一個字符串,某些格式規則,這些規則是:驗證一個字符串格式規則的Java

string : string : int : int(包括冒號)。

如何檢查字符串是否包含;兩個字符串,三個冒號和兩個整數。另外一個字符串可能有一個空間,例如「你好,」每個整數可以是任意長度。

已經嘗試了一段時間,無法找到一個整潔的方式。感謝您的任何幫助:)

+1

冒號周圍是否需要空格?你能告訴我們任何代碼嗎?樣本輸入和輸出(s)? – 2014-10-04 12:15:56

+0

對字符串使用正則表達式匹配器。請參閱主題上的[本教程](http://tutorials.jenkov.com/java-regex/matcher.html) – Benvorth 2014-10-04 12:17:12

+0

使用正則表達式。或者讀取字符串javadoc並解析它(indexOf(),substring(),Character.isDigit()可以作爲有用的方法介紹)。 – 2014-10-04 12:17:31

回答

1

你可以使用正則表達式做檢查:如果每部分包含至少一個有效的字符

public boolean match(String s) { 
    return s.matches("^.+ : .+ : \\d+ : \\d+$"); 
} 

此測試(即,對於一部分的任何字符string和部分int的任何數字)與:作爲它們之間的分隔符。

測試

System.out.println(match("blub : test : 100 : 111")); // true 
System.out.println(match("1 : 1 : 1 : 1")); // true 
System.out.println(match("blub : test : foo : bar")); // false 
System.out.println(match("blub : test : 0.1 : 0.1")); // false 
System.out.println(match("this is another : test : 100 : 111")); // true 
System.out.println(match("!\"§$%&/()=?) : .; : : : ; : 100 : 111")); // true 
System.out.println(match(" : : 100 : 111")); // false 

心靈測試match("!\"§$%&/()=?) : .; : : : ; : 100 : 111")。它返回true,因爲額外的:是第二個string部分的一部分。

+0

輝煌!馬上工作。我一直在看正則表達式,但不知道我可以像這樣將它們加在一起。謝謝 – user3648686 2014-10-04 12:35:12

-2

使用正則表達式 - 類匹配器,應該工作正常。

例如:

import java.util.Scanner; 

    public class ValidateInput 
{ 

/// validate first name 

public static Boolean validateFirstName(String firstName) 
{ 
return firstName.matches("[A-Z][a-zA-Z]*"; 
}//// end method validateFirstName 
} 

///// 


public void main(String[] args) 
{ 
//// get user input 

Scanner scanner = new Scanner(System.in); 
System.out.print("Please, enter first name: "); 

//// validate user input and display error message 

System.out.print("\nValidate Result:"); 

if(!ValidateInput.validateFirstName(firstName()) 
System.out.print("Invalide first name"); 

} 
+0

這與這個問題有什麼關係? – Bobulous 2014-10-04 12:24:56

+0

這是他想要的一個例子,不再顯示正則表達式的使用 – mkwilfreid 2014-10-04 12:25:55

+0

堆棧溢出的答案應該是針對原始問題的解決方案。 – Bobulous 2014-10-04 12:26:56

相關問題