📄 strdeal.java
字号:
package com.code10.basecomponent;
import java.io.IOException;
import java.util.ArrayList;
import java.util.regex.Pattern;
public class strDeal {
private static String urlPoint1 = "href=\"";
private static String urlPoint2 = "\"";
private static String mailPont1 = "@";
private static String mailPont2 = "[\\w\\.\\-]"; //正则表达匹配邮件地址
private static String standerPoint1 = "mailto:";
private static String standerPoint2 = ">";
private static String name1 = ">";
private static String name2 = "<";
/**
* 流转字符函数
* @param inputHtml
* @return
* @throws IOException
public static String streamToString(InputStream inputHtml) {
StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = inputHtml.read(b)) != -1;) {
out.append(new String(b, 0, n));
return out.toString();
}**/
/**链接处理函数
* StartFind开始找到匹配的位置
* RightUrl匹配结束的位置
* arrUrl为返回的URL的栈
* @param strContent
* @return
* @throws IOException
*/
public static ArrayList<String> parseURL(String strContent){
ArrayList<String> arrUrl = new ArrayList<String>();
String myUrl = strContent;
try{
int StartFind=0;
StartFind = myUrl.indexOf(urlPoint1,StartFind);
while(StartFind!=-1)
{
int RightUrl = myUrl.indexOf(urlPoint2,StartFind+urlPoint1.length()+1);
if(RightUrl <= StartFind+urlPoint1.length()){
break;
}
else {
String OkUrl = myUrl.substring(StartFind+urlPoint1.length(),RightUrl);
arrUrl.add(OkUrl.trim());
StartFind = myUrl.indexOf(urlPoint1,RightUrl);
}
}
}
catch(Exception e){
e.printStackTrace();
}
return arrUrl;
}
/**论坛混杂邮件处理函数
* midFind为@字符的位置
* leftEmail, rightEmail为左右空格的位置
* leftBcak为@开始到左边空格反转字符串t
* l,r有逻辑错误,需要注意,哎
* @param strEmail
* @return
*/
public static ArrayList<String> parseEmail(String strContent){
String myEmail = strContent;
int midFind=0;
int cut = 0;
int r=0;
int l=0;
int rightRaise;
ArrayList<String> arrEmail = new ArrayList<String>();
StringBuffer backString =new StringBuffer();
midFind = myEmail.indexOf(mailPont1,midFind);
try{
while(midFind!=-1)
{ l = 0;
r = 0;
if(midFind < 50){
cut = midFind;
}
else
{
cut =50;
}
StringBuffer leftString = backString.append(myEmail.substring(midFind-cut,midFind));
String leftEmail = leftString.reverse().toString();//反转@字符的前cut个字符
Pattern pn = Pattern.compile( mailPont2 );
//int rightRaise = myEmail.indexOf(" ",midFind);
if(myEmail.length()-midFind <50)
{
rightRaise = myEmail.length();
}
else {
rightRaise = midFind+50;
}
String RightEmail = myEmail.substring(midFind,rightRaise);
for(int i=0;i<=leftEmail.length();i++){
String hack = leftEmail.substring(i,i+1);
boolean b = pn.matcher( hack ).matches();
if(b==false){
break;}
else{
l=i;
}
}
for(int j=1;j<rightRaise-midFind;j++)
{
String hack = RightEmail.substring(j,j+1);
boolean b = pn.matcher( hack ).matches();
if(b==false){
break;}
r=j;
}
// int LeftEmail = leftBcak.indexOf(mailPont2,0);//比较反转后第一个空格的位置
//
String OkEmail = myEmail.substring(midFind-l-1 ,midFind+r+1);
if( midFind == midFind+r || midFind == midFind-l){
}
else {
arrEmail.add(OkEmail.trim());
System.out.println(OkEmail);
}
// System.out.println(OkEmail);
midFind = myEmail.indexOf(mailPont1,midFind+2);
}
}
catch(Exception e){
e.printStackTrace();
}
return arrEmail;
}
/**
* 处理比较标准的注册邮件,用户等信息.比如<a href = mailto: dshfk@sdf.com>aaa</a>这种格式
* name1为名字开始字符,name2名字结束字符
* i为用户的ID,为了避免跟数据库中的冲突,有调用函数传入
* 返回各个包含名字,邮件,ID的对象
* @param strContent
* @return
*/
public static ArrayList<Entry> standardEmail(String strContent ){
String myEmail = strContent;
int startFind=0;
ArrayList<Entry> arrEmail = new ArrayList<Entry>();
startFind = myEmail.indexOf(standerPoint1,startFind);
try{
while(startFind!=-1)
{
//i++;
int LeftEmail = startFind;
int RightEmail = myEmail.indexOf(standerPoint2,startFind);
int LeftName = RightEmail;
int RightName = myEmail.indexOf(name2,LeftName);
String OkEmail = myEmail.substring(LeftEmail + standerPoint1.length() ,LeftName);
String OkName = myEmail.substring(LeftName + name1.length(),RightName);
System.out.println(OkName);
Entry enTmp = new Entry();
enTmp.setEmail(OkEmail.trim());
enTmp.setUsername(OkName.trim());
//enTmp.setId(i);
arrEmail.add(enTmp);
startFind = myEmail.indexOf(mailPont1,RightEmail);
}
}
catch(Exception e){
e.printStackTrace();
}
return arrEmail;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -