PeterPan
   
發文: 31
積分: 1
|
於 2007-03-29 11:51
     
以下是測試 code ﹝測試前請先 replaceAll("& #","")﹞
plan 1, Duncan 大大的方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| public class Test2{
public static void main(String[] args){
String str = "& #28858;& #20102;& #36991;& #20813;& #35377;& #22810;& #26989;& #32773;"+
"& #22312;& #35442;& #29256;& #38754;& #21478;& #22806;& #38283;& #29256;"+
"& #23563;& #25214;& #20778;& #36074;& #31995;& #32113;& #21830;& #32780;"+
"& #36896;& #25104;& #20308;& #29992;& #29256;& #38754;& #30340;& #36039;"+
"& #28304;,& #25152;& #20197;& #25104;& #31435;& #35442;& #23560;& #21312;"+
"& #26159;& #28858;& #20102;& #26989;& #32773;& #23563;& #25214;& #20778;"+
"& #36074;& #31995;& #32113;& #21830;& #21450;& #30456;& #38364;& #36039;"+
"& #35338;& #27492;& #29256;& #21482;& #25552;& #20379;& #31995;& #32113;"+
"& #21830;& #20195;& #29702;& #25110;& #26159;& #31995;& #32113;& #21830;"+
"& #30456;& #38364;& #25216;& #34899;& #20154;& #21729;& #25552;& #20379;"+
"& #35442;& #20844;& #21496;& #30340;& #36039;& #35338;& #21450;& #24291;"+
"& #21578;& #22312;& #27492;& #29256;& #25171;& #24291;& #21578;& #35531;"+
"& #27880;& #24847;,& #24517;& #38920;& #25552;& #20379;& #20844;& #21496;"+
"& #30340;& #21512;& #27861;& #29151;& #26989;& #30331;& #35352;& #20197;"+
"& #21450;& #35442;& #20844;& #21496;& #30340;& #22522;& #26412;& #36039;"+
"& #26009;,& #20363;& #22914;:& #32879;& #32097;& #38651;& #35441;.& #20844;"+
"& #21496;& #21517;& #31281;.& #20844;& #21496;& #22320;& #22336;.& #26381;"+
"& #21209;& #20839;& #23481;.& #29151;& #26989;& #30331;& #35352;...& #31561;"+
"& #31561;,& #22914;& #26524;& #22522;& #26412;& #31777;& #20171;& #22826;"+
"& #36942;& #26044;& #31777;& #38475;& #25105;& #20497;& #23559;& #26377;"+
"& #27402;& #21034;& #38500;& #20854;& #25991;& #31456;& #20197;& #32173;"+
"& #35703;& #26989;& #32773;& #30340;& #27402;& #30410;& #22914;& #30070;"+
"& #26989;& #32773;& #36319;& #31995;& #32113;& #26377;& #20219;& #20309;"+
"& #31998;& #32027;& #32780;& #35442;& #20844;& #21496;& #20063;& #22312;"+
"& #26412;& #29256;& #25171;& #24291;& #21578;,& #35531;& #21209;& #24517;"+
"& #35531;& #23560;& #26989;& #20154;& #21729;& #20986;& #38754;& #35299;"+
"& #27770;& #21839;& #38988;,& #22914;& #30332;& #29694;& #35442;& #26989;"+
"& #32773;& #26377;& #21839;& #38988;& #32780;& #35442;& #20844;& #21496;"+
"& #26410;& #20986;& #38754;& #35498;& #26126;& #32622;& #20043;& #19981;"+
"& #29702;,& #25105;& #20497;& #23559;& #26371;& #21015;& #20837;& #40657;"+
"& #21517;& #21934;& #21034;& #38500;& #20854;& #30332;& #24291;& #21578;"+
"& #30340;& #27402;& #21033;,& #20778;& #36074;& #30340;& #31995;& #32113;"+
"& #23559;& #21463;& #21040;& #26989;& #32773;& #30340;& #25903;& #25345;,"+
"& #24801;& #21155;& #30340;& #31995;& #32113;& #20063;& #23559;& #26371;"+
"& #21463;& #21040;& #26989;& #32773;& #30340;& #25269;& #21046;"+
" < & #26371;>& #21729; && #26371;"+
" "& #21729; http://www.javaworld.com.tw/ so nice";
try{
System.out.println(str);
long lStartTime = System.currentTimeMillis();
str = replaceSomeHtmlCharacterEntity(str);
str = replaceCharacterEntityToUnicode(str);
long lEndTime = System.currentTimeMillis();
System.out.println(str);
System.out.println("spent "+(lEndTime-lStartTime)+" mini-second");
}
catch(Exception e){
System.out.println(e.toString());
}
}
public static String replaceCharacterEntityToUnicode(String s){
StringBuffer source = new StringBuffer(s);
StringBuffer result = new StringBuffer();
int iIndex = 0;
do{
int iSign = iIndex;
iIndex = source.indexOf("& #",iIndex);
if(iIndex<0){
result.append(source.substring(iSign));
break;
}
if(iIndex>iSign){
result.append(source.substring(iSign,iIndex));
}
int iIndex2 = source.indexOf(";",iIndex+2);
try{
int iWord = Integer.parseInt(source.substring((iIndex+2),iIndex2));
char c = (char)iWord;
result.append(c);
}
catch(Exception e){
}
iIndex = iIndex2+1;
}while(true);
return result.toString();
}
public static String replaceSomeHtmlCharacterEntity(String s){
String[] source = new String[]{" ","<",">","&","""};
String[] result = new String[]{" ","<",">","&","\""};
for(int i=0;i<source.length;i++){
if(s.indexOf(source[i])>=0){
s = s.replaceAll(source[i],result[i]);
}
}
return s;
}
}
|
plan 2, ingramchen 大大提供的方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| public class Test{
public static void main(String[] args){
String str = "& #28858;& #20102;& #36991;& #20813;& #35377;& #22810;& #26989;& #32773;"+
"& #22312;& #35442;& #29256;& #38754;& #21478;& #22806;& #38283;& #29256;"+
"& #23563;& #25214;& #20778;& #36074;& #31995;& #32113;& #21830;& #32780;"+
"& #36896;& #25104;& #20308;& #29992;& #29256;& #38754;& #30340;& #36039;"+
"& #28304;,& #25152;& #20197;& #25104;& #31435;& #35442;& #23560;& #21312;"+
"& #26159;& #28858;& #20102;& #26989;& #32773;& #23563;& #25214;& #20778;"+
"& #36074;& #31995;& #32113;& #21830;& #21450;& #30456;& #38364;& #36039;"+
"& #35338;& #27492;& #29256;& #21482;& #25552;& #20379;& #31995;& #32113;"+
"& #21830;& #20195;& #29702;& #25110;& #26159;& #31995;& #32113;& #21830;"+
"& #30456;& #38364;& #25216;& #34899;& #20154;& #21729;& #25552;& #20379;"+
"& #35442;& #20844;& #21496;& #30340;& #36039;& #35338;& #21450;& #24291;"+
"& #21578;& #22312;& #27492;& #29256;& #25171;& #24291;& #21578;& #35531;"+
"& #27880;& #24847;,& #24517;& #38920;& #25552;& #20379;& #20844;& #21496;"+
"& #30340;& #21512;& #27861;& #29151;& #26989;& #30331;& #35352;& #20197;"+
"& #21450;& #35442;& #20844;& #21496;& #30340;& #22522;& #26412;& #36039;"+
"& #26009;,& #20363;& #22914;:& #32879;& #32097;& #38651;& #35441;.& #20844;"+
"& #21496;& #21517;& #31281;.& #20844;& #21496;& #22320;& #22336;.& #26381;"+
"& #21209;& #20839;& #23481;.& #29151;& #26989;& #30331;& #35352;...& #31561;"+
"& #31561;,& #22914;& #26524;& #22522;& #26412;& #31777;& #20171;& #22826;"+
"& #36942;& #26044;& #31777;& #38475;& #25105;& #20497;& #23559;& #26377;"+
"& #27402;& #21034;& #38500;& #20854;& #25991;& #31456;& #20197;& #32173;"+
"& #35703;& #26989;& #32773;& #30340;& #27402;& #30410;& #22914;& #30070;"+
"& #26989;& #32773;& #36319;& #31995;& #32113;& #26377;& #20219;& #20309;"+
"& #31998;& #32027;& #32780;& #35442;& #20844;& #21496;& #20063;& #22312;"+
"& #26412;& #29256;& #25171;& #24291;& #21578;,& #35531;& #21209;& #24517;"+
"& #35531;& #23560;& #26989;& #20154;& #21729;& #20986;& #38754;& #35299;"+
"& #27770;& #21839;& #38988;,& #22914;& #30332;& #29694;& #35442;& #26989;"+
"& #32773;& #26377;& #21839;& #38988;& #32780;& #35442;& #20844;& #21496;"+
"& #26410;& #20986;& #38754;& #35498;& #26126;& #32622;& #20043;& #19981;"+
"& #29702;,& #25105;& #20497;& #23559;& #26371;& #21015;& #20837;& #40657;"+
"& #21517;& #21934;& #21034;& #38500;& #20854;& #30332;& #24291;& #21578;"+
"& #30340;& #27402;& #21033;,& #20778;& #36074;& #30340;& #31995;& #32113;"+
"& #23559;& #21463;& #21040;& #26989;& #32773;& #30340;& #25903;& #25345;,"+
"& #24801;& #21155;& #30340;& #31995;& #32113;& #20063;& #23559;& #26371;"+
"& #21463;& #21040;& #26989;& #32773;& #30340;& #25269;& #21046;"+
" < & #26371;>& #21729; && #26371;"+
" "& #21729; http://www.javaworld.com.tw/ so nice";
try{
System.out.println(str);
long lStartTime = System.currentTimeMillis();
str = replaceSomeHtmlCharacterEntity(str);
str = org.htmlparser.util.Translate.decode(str);
long lEndTime = System.currentTimeMillis();
System.out.println(str);
System.out.println("spent "+(lEndTime-lStartTime)+" mini-second");
}
catch(Exception e){
System.out.println(e.toString());
}
}
public static String replaceSomeHtmlCharacterEntity(String s){
String[] source = new String[]{" ","<",">","&","""};
String[] result = new String[]{" ","<",">","&","\""};
for(int i=0;i<source.length;i++){
if(s.indexOf(source[i])>=0){
s = s.replaceAll(source[i],result[i]);
}
}
return s;
}
}
|
就花費時間而言,方案 1 比較好,如果沒有漏判等意外.. (瀑布汗) 感謝兩位大大 m(_._)m
PeterPan edited on 2007-03-29 12:18
 
|