📄 parser.java
字号:
/*
* Copyright (C) 2006-2007 Funambol
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*
*/
package com.funambol.mailclient.ui.utils;
import com.funambol.util.ChunkedString;
import com.funambol.util.Log;
import java.util.Enumeration;
import java.util.Vector;
public class Parser {
private static String[] VALID_PREFIX= { "http://", "www.", "ftp://", "https://" } ;
private static int MIN_PHONE_NUMER_LEN=4;
/**
* Creates a new instance of Parser
*/
private Parser() {
}
public static Vector extractLinks(String text) {
String[] sep = {
" ",
"\n\r",
"\r\n",
"\n",
",",
"\r"};
Vector links=new Vector();
ChunkedString cs = new ChunkedString(text);
String word;
while ( (word=cs.getNextString(sep)) != null ) {
if (isLink(word)) {
links.addElement(word);
}
}
return links;
}
public static Vector extractNumbers(String text) {
Vector numbers=new Vector();
Enumeration en=split(text).elements();
while (en.hasMoreElements()) {
String el=(String)en.nextElement();
if (isPhoneNumber(el)) {
numbers.addElement(el);
}
}
return numbers;
}
public static Vector split( String text, String separator ){
Vector result = new Vector();
int start=0;
//Log.debug("index=" + text.indexOf(separator));
int pos=text.substring(start).indexOf(separator);
//Log.debug("pos= "+ pos);
while (pos !=-1) {
//Log.debug("Adding -" + text.substring( start, start+pos ).trim()+"-");
result.addElement(text.substring( start, start+pos ).trim());
start+=pos+separator.length();
pos=text.substring(start).indexOf(separator);
//Log.debug("pos= "+ pos);
}
//Log.debug("Adding last entry: -" + text.substring(start).trim()+ "-");
result.addElement(text.substring(start).trim());
return result;
}
public static Vector split( String text){
return split(text, " ");
}
private static boolean isLink(String el) {
for (int i=0; i<VALID_PREFIX.length;i++) {
// WARNING!! Be careful with turkish localization ,
// turkish alphabet has 2 lower-case i, string comparison may
// return unexpected results!!
if ( el.toLowerCase().startsWith(VALID_PREFIX[i])) {
return true;
}
}
return false;
}
// TODO: use a real isPhoneNumber function i.e. that can handle
// strings like (+39)02#8373311
private static boolean isPhoneNumber(String el) {
try {
Integer.parseInt(el);
if (el.length()>=MIN_PHONE_NUMER_LEN)
return true;
else
return false;
} catch (NumberFormatException ex){
// here we don't need a log.error output, because we have no real error!
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -