`
superloafer
  • 浏览: 167821 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个验证字符串的方法

阅读更多
自己写的一个验证字符串的类
/**
Validate a String such that it meets the following rules:
4 Rules:
Rule1: the length of the string should be between 5 and 15(inclusive);
Rule2: at least a digit should be contained within the string;
Rule3: all the characters should be in lower case;
Rule4: there are no adjacent identical substrings, eg, banana123, violates rule4, because b[an][an]123, while b[an]c[an]123 is a valid one.
*/
public class StringValidation
{
	public static void main(String[] args) {
		String test1 = "bancanab2324";
		String test2 = "bananab2324";
		validateStr(test1);
		validateStr(test2);
	}
	
	public static boolean validateStr(String aStr) {
		if(aStr.length() < 5 && aStr.length() > 15) {//rule1
			System.out.println(" The length is : " + aStr.length());
			return false;
		}
		//Check if there is any digit in the string
		char zero = '0';
		char nine = '9';
		boolean hasDigit = false;
		for(int i = 0; i < aStr.length(); i++ ) {
			if(aStr.charAt(i) >= zero && aStr.charAt(i) <= nine) {
				hasDigit = true;
				break;
			}
		}
		if(!hasDigit) {//no digit in the string.
			System.out.println("There are no digits contained in the string!");
			return false;
		}

		//Rule3
		if(!aStr.equals(aStr.toLowerCase())){
			System.out.println("The characters in the string are not all in lower case!");
			return false;
		}
		
		String subStr1 = null;
		String subStr2 = null;
		int span = 0;//the length of the substring.
		//Rule4
		for(int i = 0; i < aStr.length() - 1; i++){
			//we don't have to traverse the rest of the string, because the substring's length won't surpass half of the rest string.
			for(int j = i + 1; j <= i + (aStr.length() - i) / 2;  j++ ) {
				subStr1 = aStr.substring(i, j);
				span = j - i;
				subStr2 = aStr.substring(j, j + span);
				System.out.println(subStr1 + " : " + subStr2);
				if(subStr1.equals(subStr2)) {
					System.out.println("There exist two identical adjacent substrings!");
					return false;
				}
			}//inner for
		}//outer for

		return true;
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics