`
uule
  • 浏览: 6309592 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

SourceUtils-代码校验工具类

 
阅读更多

校验命名、替换非法字符

java.lang.Character

 

Character.isJavaIdentifierStart(char ch)

 

Character.isJavaIdentifierPart(char ch)

 

/**
 * 
 * java 代码校验工具类
 *
 */
public class SourceUtils {

	/**
	 * 判断str是否是合法的java标识
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isValidJavaIdentifier(String str) {
		if(str == null) return false;
		// 确定是否允许将指定字符作为 Java 标识符中的首字符。
		if (str.length() == 0
				|| !Character.isJavaIdentifierStart(str.charAt(0)))
			return false;
		String name = str.substring(1);
		for (int i = 0; i < name.length(); i++)
			// 确定指定字符是否可以是 Java 标识符中首字符以外的部分。
			if (!Character.isJavaIdentifierPart(name.charAt(i)))
				return false;
		return true;
	}
	
	/**
	 * 判断str是否是合法的java包
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isValidJavaPackage(String str){
		if(str.trim().endsWith(".")) return false;
		String[] strs = str.split("\\.");
		for(String i : strs){
			if(!isValidJavaIdentifier(i))return false;
		}
		return true;
	}
	
	/**
	 * 将str中非法的字符替换
	 * 并返回一个合法的java标识
	 * 
	 * @param str
	 * @return
	 */
	public static String replaceIllegalChar(String str){
		StringBuffer java = new StringBuffer();
		if(str == null) return "a";
		// 确定是否允许将指定字符作为 Java 标识符中的首字符。
		if (str.length() == 0
				|| !Character.isJavaIdentifierStart(str.charAt(0))){
			java.append("a").append(str.charAt(0));
		}else{
			java.append(str.charAt(0));
		}
		String name = str.substring(1);
		for (int i = 0; i < name.length(); i++){
			// 确定指定字符是否可以是 Java 标识符中首字符以外的部分。
			if (!Character.isJavaIdentifierPart(name.charAt(i))){
				java.append("_");
			}else{
				java.append(name.charAt(i));
			}
		}
		return java.toString();
	}
	
}

 

// 去除空格
		 name.replaceAll(" ", "");
		 /* 		  
		  * 此处的替换和判断均是为了提高代码的健壮程度而添加的
		  */
		 name = SourceUtils.replaceIllegalChar(name);

 

 

...

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics