空间站

北极心空

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
//GB2312汉字笔画解析

 
public class CnToStrokeCount {

 
/**
  * 
@param args
  
*/
 
public static void main(String[] args) {
  String cnStr 
= "测试数据";
  
char[] chars = cnStr.toCharArray();
  System.out.print(
"<" + cnStr + ">的笔画数分别是:");
  
for (int i = 0; i < chars.length; i++) {
   System.out.print(
"*" + CnToStrokeCount.getStrokeCount(chars[i]));
  }
  System.out.println(
"*");

  cnStr 
= "CSDN - 专家门诊 - Java";
  chars 
= cnStr.toCharArray();
  System.out.print(
"<" + cnStr + ">的笔画数分别是:");
  
for (int i = 0; i < chars.length; i++) {
   System.out.print(
"*" + CnToStrokeCount.getStrokeCount(chars[i]));
  }
  System.out.println(
"*");

  cnStr 
= "提问";
  chars 
= cnStr.toCharArray();
  System.out.print(
"<" + cnStr + ">的笔画数分别是:" + getTotalStrokeCount(cnStr));

 }

 
public static int getTotalStrokeCount(String src) {
  
if (src == null || src.trim().equals("")) {
   
return -1;
  }
  
int totalCnt = 0;
  src 
= src.trim();
  
char[] chars = src.toCharArray();
  
for (char c : chars) {
   totalCnt 
+= getStrokeCount(c);
  }
  
return totalCnt;
 }

 
/**
  * 根据汉字字符获得笔画数,拼音和非法字符默认为0
  * 
  * 
@param charcator
  *            char
  * 
@return int
  
*/
 
public static int getStrokeCount(char charcator) {
  
byte[] bytes = (String.valueOf(charcator)).getBytes();
  
if (bytes == null || bytes.length > 2 || bytes.length <= 0) {
   
// 错误引用,非合法字符
   return 0;
  }
  
if (bytes.length == 1) {
   
// 英文字符
   return 0;
  }
  
if (bytes.length == 2) {
   
// 中文字符
   int highByte = 256 + bytes[0];
   
int lowByte = 256 + bytes[1];
   
return getStrokeCount(highByte, lowByte);
  }

  
// 未知错误
  return 0;
 }

 
/**
  * 
  * 
@param highByte
  *            int:高位字节
  * 
@param lowByte
  *            int:低位字节
  * 
@return int
  
*/
 
private static int getStrokeCount(int highByte, int lowByte) {
  
if (highByte < 0xB0 || highByte > 0xF7 || lowByte < 0xA1
    
|| lowByte > 0xFE) {
   
// 非GB2312合法字符
   return -1;
  }
  
int offset = (highByte - 0xB0* (0xFE - 0xA0+ (lowByte - 0xA1);
  
return gb2312StrokeCount[offset];
 }

 
// GB2312的字符集的笔划列表,可以参考gb2312字符全集
 private static int[] gb2312StrokeCount = {
 
/* B0 */
 
1071010810911171413513101215106109,
   
138101088105101416912121515710,
   
557102948121371072110859613,
   
889131210137101088787195485,
   
910141491215101512128951510,
   
/* B1 */
   
16139128887151013198131285129,
   
4910781212108851111119918912,
   
144131081413146109471361114513,
   
161716918512899841616171291115,
   
819167151112161310137695899,
   
/* B2 */
   
10681115810812913101478111114,
   
1287102107114571910817111273,
   
712158111114168109111177104717,
   
1616151198128597191239991412,
   
147988101012111412111311611198,
   
11,
   
/* B3 */
   
69114117212811101279121515117,
   
8471512715106761177712815109,
   
16671012121588101010613911676,
   
6108847105966611881312141313,
   
134111441075161218121312913,
   
/* B4 */
   
101224131351239137111279121576,
   
67811138913151011721181111914,
   
141313107681261512754511111517,
   
91916121411131013141114763141512,
   
1110131261214537412179959119,
   
11,
   
/* B5 */
   
9108481011951271111811116910,
   
910210171071168151112111511819,
   
612121714412714810117101414886,
   
12119710121611131398169577811,
   
1211131351610211681012101415811,
   
13,
   
/* B6 */
   
27578121384655121569897911,
   
74971012101391291011131271479,
   
127141214911121174515719121079,
   
912119669136131181211131012915,
   
6101047121110106265992,
   
/* B7 */
   
959126498918612181588173104,
   
788577774886766781181138,
   
1010788897117847712710868,
   
1212498131012491110513684774,
   
15814781312911698,
   
/* B8 */
   
101113115771110108111281491118,
   
1291258413612476138151487139,
   
11123579971013811214699777,
   
1271610101410161315157101412411,
   
108129121012912113691013107819,
   
/* B9 */
   
10101137510118104936797694,
   
78898811121181478881351197,
   
89108128591491388812689614,
   
1123122086310138611579698910,
   
81398121312121088146915910106,
   
109121471271112812716161071610,
   
116558101717141196105108121011,
   
10587611139811141415915121199,
   
910715169891091197561291279,
   
10685813101291581512,
   
/* BB */
   
88117474796121286481397117,
   
681071210111012131110949121116,
   
151791112131013911691217912613,
   
10155121110116105699981113911,
   
1796410812168115611613151014,
   
/* BC */
   
6591647101112671213201239106,
   
7136921031371686118119111145,
   
9777106149681059121051011156,
   
981371076117131088612911914,
   
12810139111191413129413156,
   
/* BD */
   
10109811121081599106191210966,
   
138151217121068999201211118119,
   
791691311141010512121191112614,
   
751081113149913871779104998,
   
3124849181013413713101371010,
   
/* BE */
   
67914813121681114138419121114,
   
1412168101311108912127579372,
   
1011115613812817881088117899,
   
814711481115131051181010121010,
   
1181015237111017966971196710,
   
/* BF */
   
9121091012859412138125121179,
   
9111417674869101588912151497,
   
95127891081191077810411736,
   
11910138147126991310713871012,
   
612710811773118131291311,
   
/* C0 */
   
12121288107961312881214121411,
   
107131311981612515141291612913,
   
11121011810101077689131010115,
   
131816151117916698121379111115,
   
1610101311771551096107571047,
   
1289,
   
/* C1 */
   
125117821410912107181381081111,
   
1210981310111377111212910151114,
   
716145152141714106121061112817,
   
16972011151078911131310711107,
   
108115513111412131061510945118,
   
1116,
   
/* C2 */
   
118871391215148751178117812,
   
1913211310111612871576118101512,
   
12101291113119109137711117864,
   
7761117811131414131299961178,
   
93914610678691514121314111414,
   
/* C3 */
   
136988610118134510589121493,
   
881114151379121479912812375,
   
1113171313111181115191791186108,
   
814111212101111791012981113179,
   
128714558511109816811681313,
   
/* C4 */
   
1419141416152085101516813138116,
   
9877851314131214451381610979,
   
6976259897102291098118104,
   
141081610857710139131486151511,
   
8101457101019111515101198165,
   
/* C5 */
   
88479710967579313989172010,
   
1089818711711988812811121112,
   
919151115910796810169787910,
   
12889111412101087129108111512,
   
1312131616813111389217815129,
   
/* C6 */
   
11121054121572015114121514161114,
   
1691389136881158107988111110,
   
14811105124101211131061012101419,
   
181212101182101497812881111106,
   
148611106367991646778511,
   
/* C7 */
   
9996810361351211161010915138,
   
1511124148712714141271614141010,
   
1768516151210910485899991012,
   
137151213789910101116121211810,
   
6127957117598124116118711,
   
/* C8 */
   
811171551123616106111048410816,
   
713141211121312165922202020597,
   
9121044277643765446913916,
   
1413109412969201617610862158,
   
6151312710810159111317131438,
   
/* C9 */
   
612101381212612136101214109687,
   
71311131210987371485816171612,
   
610151461112103814111012106314,
   
41078111111681113101310761058,
   
77111089781198131175129411,
   
/* CA */
   
911129565991283825974998,
   
7558988653598914108913169,
   
5812845998864967111181411,
   
15811107138121112412111516121713,
   
1312131258976914111314,
   
/* CB */
   
10891410551091741110413127179,
   
1291110912151597556136135768,
   
38108109769121516147129101012,
   
14131311781413149111110211361712,
   
1410610101311101411101281355612,
   
/* CC */
   
169171598851011487713815137,
   
17131514108121014115961313111215,
   
10161015111510111013101110911105,
   
101018131013111015121215161271217,
   
11109841113511914129781113910,
   
8479,
   
/* CD */
   
561199912101013176117121110129,
   
1211751057981010101136812611,
   
1313131497417861110768127812,
   
991299410951591281031171310,
   
111211811312743868811769,
   
/* CE */
   
2013647107111141411711866775,
   
14899121771211111531412104977,
   
1410613108913101271481277794,
   
69947117748410414697513118,
   
4510981486118121561310,
   
/* CF */
   
12107111531114111361217111031312,
   
119712681597171413989312106,
   
1113651469811117981399813713,
   
111291088911229151712312108139,
   
8991513611111215910181210101110,
   
/* D0 */
   
371071110101381315156913611811,
   
5119191688121016712871374911,
   
9131212669766168788541067,
   
121469106131271010146141114910,
   
6131196710912121111712911115,
   
/* D1 */
   
9191091316851169141268666106,
   
55966891073741011131112966,
   
11911101110791287715118881111,
   
914101216691210912101110951010,
   
768869610611910141613714,
   
/* D2 */
   
1361311129910992012158611736,
   
1155612811112712118661361211,
   
51014789181291031744787637,
   
171113961313154310138510761711,
   
899610968711111174411,
   
/* D3 */
   
581511187141011119147179151312,
   
998717101113141388105119596,
   
11745710781276457129256113,
   
81313131479128121211114108369,
   
6965116861212101213119813,
   
/* D4 */
   
1012121015510111049101012147710,
   
13131278149946121198124101010,
   
4949471511101355106109710106,
   
6919121610101214171219861692016,
   
1077178868109151512164121255,
   
/* D5 */
   
11899148597141061010141891311,
   
810814111022959101211151114147,
   
121073785816138978913136145,
   
147101216813147109131013101667,
   
88107151015613911896816959,
   
/* D6 */
   
91087684714881053811812126,
   
1087941156771011610138981210,
   
13881112811498910898966686,
   
9712978810891710101261110810,
   
6101281715511971181212,
   
/* D7 */
   
78987494981514151061261567,
   
121391471110101088101281011117,
   
9991091211712591336116181215,
   
8119777912107811977810201615,
   
12131215957911771000000,
   
/* D8 */
   
333444566101016181234455,
   
691114141918142647711144610,
   
1112141516258111115872467888,
   
9101010131314141516282444555,
   
566666666677777,
   
/* D9 */
   
7777888888888888999999,
   
9991010101010101010101010101011,
   
1111111111111212121314141414141415,
   
1556779176841216171821299116,
   
6728101011121212131619192688,
   
/* DA */
   
102101025556667777778888,
   
888888899991010101010101011,
   
1111111111111111111112121212121313,
   
14141415151928255667777899,
   
101010111111165555667777,
   
/* DB */
   
77888888899999101011111313,
   
13141416191757577810101115917,
   
2022610251012799141616176666,
   
6667778888888888999999,
   
9991010101010101111111111,
   
/* DC */
   
1111111111121212121313141414152021,
   
22355666666677777777777,
   
7777777777778888888888,
   
8888888889999999999999,
   
99999999999,
   
/* DD */
   
99999991010101010101010101010,
   
1010101010101010101111111111111111,
   
1111111111111111111111111111111111,
   
1112121212121212121212121212121212,
   
1212131313131313131313131313131313,
   
1314141414141414,
   
/* DE */
   
1414141415151515151515151516161616,
   
1616161616171717171718191919202022,
   
3967991010113551236788889,
   
99101010111111111111111111111111,
   
1212121212121212121213131313131313,
   
1314141414,
   
/* DF */
   
14151515151616161717192325378125,
   
5555566677777777777888,
   
8888888899999999999999,
   
9999999999101010101010101010,
   
10101111111111111111111111,
   
/* E0 */
   
1111111111111111121212121212121212,
   
1212121212121212131313131313131313,
   
1313131313131313131313131414141414,
   
1414141415151515151515151515151616,
   
16161616171719253667789101111,
   
167888101111,
   
/* E1 */
   
11121414151566777777777888,
   
888888899991010111111111111,
   
1112121212121212121212131313141515,
   
171719378999101111121315162433,
   
5666778889999101010101010,
   
/* E2 */
   
1011111111111111121212121212141415,
   
151617206141214336777778910,
   
101112121313141515255778991111,
   
1111121314151616173566777777,
   
777778888888888899999,
   
/* E3 */
   
99101010101010101011111111111111,
   
1112121212121212131314151515161618,
   
81746777799101010111111111111,
   
12121313131434836667777777,
   
777778888888888888888,
   
/* E4 */
   
999999999999999999101010,
   
1010101010101010111111111111111111,
   
1111111111111212121212121212121212,
   
1213131313131313131313131313131313,
   
1314141414141414141414141414141515,
   
1515151516,
   
/* E5 */
   
1616161616171717171719191920202124,
   
35889101213141415161617173778,
   
888888991010101010101111111112,
   
12121213131313151516161717183119,
   
12591010121415218891112223667,
   
777,
   
/* E6 */
   
7777778888999999910101010,
   
1010101011111111111111121212121313,
   
1313131314141414141414151616171720,
   
5978123388888888999101111,
   
111112121313131414151920366666,
   
/* E7 */
   
777888888899910101011111111,
   
1111111111111112121212121212121212,
   
1313131313131313141414141415151516,
   
16161619315381066888999999,
   
99101010101010101010111212121212,
   
121212,
   
/* E8 */
   
1212131313131314141515151515151516,
   
1717171820201313147777788888,
   
8888888899999999999999,
   
9999910101010101010101010101010,
   
1010101010101111111111111112121212,
   
12,
   
/* E9 */
   
1212121212121213131313131313131313,
   
1313131313131313131414141414141414,
   
1414141414151515151515151516161616,
   
16161616161616171717171813148999,
   
111111121214167899999999910,
   
101010111212,
   
/* EA */
   
12121315161058111212131313141489,
   
1216161746678888888999999,
   
1010101010101111121313141416181820,
   
2199991010101011111112121491011,
   
12131415159136891111121212131410,
   
1112,
   
/* EB */
   
1417101012121213151616225677910,
   
1011134111312131591567778888,
   
8888999999999999910101010,
   
1010101010111111111111121212121212,
   
1213131313131313131414141515161717,
   
1717,
   
/* EC */
   
17167111213131699121316164131317,
   
12151681010101111131478889999,
   
910101111111212131313131313131314,
   
15151515161616182130411131688911,
   
124788999999910101212131416,
   
2177,
   
/* ED */
   
91010101010101113131416161717244,
   
689127889999999101010101010,
   
1010101011111111111111111213131313,
   
1314141414141515151616171718191821,
   
111217198999991010101111111112,
   
1212121313,
   
/* EE */
   
1313141414141515161616171878999,
   
101213179101012131414161717101623,
   
5667778888889999999999,
   
1010101010101010101010101010101010,
   
1010111111111111111111111111111111,
   
111111,
   
/* EF */
   
1111111111111111121212121212121212,
   
1212121212121212131313131313131313,
   
1313131414141414141414141414141515,
   
1515151515151616161616161616171717,
   
17171717171717181818192014912139,
   
91010111212121313,
   
/* F0 */
   
151516171822911121317101177899,
   
1010101010101111111111121212121212,
   
1313131313141414141415151616161717,
   
17171818225778899101010101010,
   
1010111112121212121213131313131313,
   
14141414141414,
   
/* F1 */
   
1515151516161616161616161718181818,
   
212311128899101113131414141558,
   
99991011111111121212121313131313,
   
13141414141415151617192459111296,
   
91012121314151516162212811111112,
   
15161291010,
   
/* F2 */
   
12121212131515161616182021610789,
   
9991010101010101010101011111111,
   
1111111111111112121212121212121212,
   
1212131313131313131314141414141414,
   
1414141414141415151515151515151515,
   
1515151516161616,
   
/* F3 */
   
1616161616161717171717171717171717,
   
181818181919191920212426614171710,
   
89991010101010111111111111111111,
   
1111111212121212121313131313131414,
   
1414141414141414141415151515161616,
   
1616171717171717,
   
/* F4 */
   
1818181919198911121010999101010,
   
1011111111121313141517181910101113,
   
131911111315151691010111112121314,
   
14141515151515161861591112141415,
   
15161761214141725111991213132311,
   
151011910101012,
   
/* F5 */
   
1212131313141414141415151616161717,
   
181919192020217161013141818101011,
   
1111121212121212121213131313131313,
   
1414151515151515151516161616161616,
   
161717171919191919202122222324712,
   
131317171111121213,
   
/* F6 */
   
1314151318121112121414161616191920,
   
22101313131414151517812208101013,
   
1418181414151617181821241212131313,
   
1313131313141414141414141415151515,
   
1515151515151616161616161616161616,
   
161717171717171717,
   
/* F7 */
   
1818181818191919191919202020211414,
   
1515161818181919131314141415151717,
   
1818191922141415161617191215182222,
   
1013141515161616181920232514151713,
   
1616171919212317171718181920202020,
   
211718202323161723,
 
/* F8 */
 };
}




Trackback: http:
//tb.blog.csdn.net/TrackBack.aspx?PostId=1615382

posted on 2007-10-09 08:41 芦苇 阅读(706) 评论(0)  编辑  收藏 所属分类: JAVA其他

只有注册用户登录后才能发表评论。


网站导航: