JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區 » Unicode/中文  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:以&#開頭 以;結尾的字,要如何轉為原本的中文字? [Re:PeterPan]
PeterPan





發文: 31
積分: 1
於 2007-03-29 11:51 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
以下是測試 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[]{"&nbsp;","&lt;","&gt;","&amp;","&quot;"};
    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;"+
                 "&nbsp;&lt;&nbsp;& #26371;&gt;& #21729;&nbsp;&amp;& #26371;"+
                 "&nbsp;&quot;& #21729;&nbsp;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[]{"&nbsp;","&lt;","&gt;","&amp;","&quot;"};
    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
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
3921 以&#開頭 以;結尾的字,要如何轉為原本的中文字? PeterPan 76 2007-03-28 16:41
3436 Re:以&#開頭 以;結尾的字,要如何轉為原本的中文字? Duncan 410 2007-03-28 17:49
3464 Re:以&#開頭 以;結尾的字,要如何轉為原本的中文字? ingramchen 207 2007-03-28 17:59
3558 Re:以&#開頭 以;結尾的字,要如何轉為原本的中文字? PeterPan 9748 2007-03-29 11:51
2603 Re:以&#開頭 以;結尾的字,要如何轉為原本的中文字? PeterPan 1196 2007-08-20 10:35
2565 Re:以&#開頭 以;結尾的字,要如何轉為原本的中文字? metavige 41 2007-08-21 08:49
3447 Re:以&#開頭 以;結尾的字,要如何轉為原本的中文字? PeterPan 40 2007-08-21 15:51
» JWorld@TW »  Java 新手區 » Unicode/中文

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8