当前位置: 代码迷 >> J2EE >> 如何从指定的字符串中提取email
  详细解决方案

如何从指定的字符串中提取email

热度:631   发布时间:2013-11-12 22:46:50.0

从指定的字符串中提取Email ?

解决方案:

/** 
 * 从指定的字符串中提取Email 
 * content 指定的字符串 
 */
public static String parse(String content) { 
 String email = null; 
 if (content==null || content.length()<1) { 
  return email; 
 } 
 //找出含有@ 
 int beginPos; 
 int i; 
 String token = "@"; 
 String preHalf=""; 
 String sufHalf = ""; 
   
 beginPos = content.indexOf(token); 
 if (beginPos>-1) { 
  //前项扫描 
  String s = null; 
  i= beginPos; 
  while(i>0) { 
   s = content.substring(i-1,i); 
   if (isLetter(s)) 
    preHalf = s+preHalf; 
   else
    break; 
   i--; 
  } 
  //后项扫描 
  i= beginPos+1; 
  while( i<content.length()) { 
   s = content.substring(i,i+1); 
   if (isLetter(s)) 
    sufHalf =  sufHalf +s; 
   else
    break; 
   i++;   
  } 
  //判断合法性 
  email = preHalf + "@" + sufHalf; 
  if (isEmail(email)) { 
   return email; 
  } 
 } 
 return null; 
} 
  
/** 
 * 判断是不是合法Email 
 * email Email地址 
 */
public static boolean isEmail(String email) { 
 try { 
  if (email==null || email.length()<1 || email.length()>256) { 
   return false; 
  } 
    
  String check = "^([0-9a-zA-Z]+[_.0-9a-zA-Z-]+)@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2,3})$"; 
  Pattern regex = Pattern.compile(check); 
  Matcher matcher = regex.matcher(email); 
  boolean isMatched = matcher.matches(); 
  if(isMatched) { 
   return true; 
  } else { 
   return false; 
  } 
 } catch (RuntimeException e) { 
  return false; 
 }  
} 
  
/** 
 * 判断是不是合法字符 
 * c 要判断的字符 
 */
public static boolean isLetter(String c) { 
 boolean result = false; 
   
 if (c==null || c.length()<0) { 
  return false; 
 } 
 //a-z  
 if (c.compareToIgnoreCase("a")>=0 && c.compareToIgnoreCase("z")<=0) { 
  return true; 
 } 
 //0-9 
 if (c.compareToIgnoreCase("0")>=0 && c.compareToIgnoreCase("9")<=0) { 
  return true; 
 } 
 //. - _ 
 if (c.equals(".") || c.equals("-") || c.equals("_") ) { 
  return true; 
 } 
 return result;  
}

  相关解决方案