Java °æ (¾«»ªÇø)

·¢ÐÅÈË: wpf (I'llTouchTheBlueSky), ÐÅÇø: Java
±ê  Ìâ: ÎªÐÔÄܶøÉè¼Æ(1) 
·¢ÐÅÕ¾: ¹þ¹¤´ó×϶¡Ïã (2001Äê11ÔÂ08ÈÕ19:34:26 ÐÇÆÚËÄ), Õ¾ÄÚÐżþ

·¢ÐÅÈË: SuperMMX (ЦÌì×Ó*²»ÔٺȿÉÀÖ), ÐÅÇø: Java
±ê  Ìâ: ÎªÐÔÄܶøÉè¼Æ(1)
·¢ÐÅÕ¾: BBS Ë®Ä¾Ç廪վ (Thu Nov  8 18:06:54 2001)
From http://SuperMMX.dhs.org/forum
Ô­ÎÄÇëµ½´ËÕ¾²é¿´.
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡[b]ΪÐÔÄܶøÉè¼Æ, µÚÒ»²¿·Ö: ½Ó¿ÚÊÂÒË[/b]
From Java World.
[b]ÔÚÉè¼Æ Java ÀàµÄʱºò±ÜÃâÐÔÄÜÉϵÄðÏÕ[/b]
[b][u]¸ÅÒª[/u][/b]
Ðí¶àͨ³£µÄ Java ÐÔÄÜÎÊÌⶼÆðÔ´ÓÚÔÚÉè¼Æ¹ý³ÌÔçÆÚÖеÄÀàÉè¼ÆµÄ˼Ïë, ÔçÔÚÐí¶à¿ª·¢
Õß
¿ªÊ¼¿¼ÂÇÐÔÄÜÎÊÌâ֮ǰ. ÔÚÕâ¸öϵÁÐÖÐ, Brian Goetz ÌÖÂÛÁËͨ³£µÄ Java ÐÔÄÜÉϵÄð
ÏÕ
ÒÔ¼°ÔõôÔÚÉè¼Æʱºò±ÜÃâËüÃÇ.
By Brian Goetz
·­Òë by SuperMMX
Ðí¶à³ÌÐòÔ±ÔÚ¿ª·¢ÖÜÆڵĺóÆڲſÉÊÇ¿¼ÂÇÐÔÄܹÜÀí. ËûÃdz£³£°ÑÐÔÄÜÓÅ»¯ÍÏÑÓµ½×îºó, 
Ï£
ÍûÄÜÍêÈ«±ÜÃâ -- ÓÐʱºòÕâÖÖ²ßÂÔÊdzɹ¦µÄ. µ«ÊÇÔçÆÚµÄÉè¼Æ˼Ïë¿ÉÒÔÓ°ÏìÐÔÄÜÓÅ»¯µÄ
Ðè
Çó¼°Æä³É¹¦. Èç¹ûÐÔÄÜÊÇÄãµÄ³ÌÐòµÄÒ»¸öÖØÒªÖ¸±ê, ÄÇôÐÔÄܹÜÀíÓ¦¸Ã´ÓµÚÒ»ÌìÆð¾ÍºÍ
Éè¼Æ
¿ª·¢ÖÜÆÚÕûºÏÔÚÒ»Æð.
Õâ¸öϵÁÐ̽Ë÷һЩÔçÆÚµÄÉè¼Æ˼ÏëÄܹ»¼«´óÓ°ÏìÓ¦ÓóÌÐòÐÔÄܵķ½·¨. ÔÚÕâƪÎÄÕÂÖÐ, 
ÎÒ
רעÓÚ×îͨ³£µÄÐÔÄÜÎÊÌâÖеÄÒ»¸ö: ÁÙʱ±äÁ¿µÄ´´½¨. Ò»¸öÀàµÄ¶ÔÏó´´½¨·½Ê½³£³£ÔÚÉè
¼Æ
ʱºò¾ÍÈ·¶¨Á˵Ġ-- µ«²»ÊǹÊÒâµÄ --, ¾ÍΪºóÀ´µÄÐÔÄÜÎÊÌâÖÖÏÂÁËÖÖ×Ó.
ÔĶÁÕû¸öµÄ "ΪÐÔÄܶøÉè¼Æ" ÏµÁÐ:
µÚÒ»²¿·Ö: ½Ó¿ÚÊÂÒË
µÚ¶þ²¿·Ö: ¼õÉÙ¶ÔÏó´´½¨
µÚÈý²¿·Ö: Ô¶³Ì½Ó¿Ú (March 23, 2001)
ÐÔÄÜÎÊÌâÓи÷ÖÖÐÎʽ. ×îÈÝÒ×µ÷ÕûµÄÊÇÄÇЩÄã¼òµ¥µØΪ¼ÆËãÑ¡ÔñÁËÒ»¸ö´íÎóµÄËã·¨ --
¾ÍÏóʹÓÃʹÓÃðÅÝËã·¨À´¶ÔÒ»¸ö´óÊý¾Ý¼¯½øÐÐÅÅÐò, »òÕßÔÚʹÓÃÒ»¸ö¾­³£Ê¹ÓõÄÊý¾ÝÏî
ʱ
²»ÊÇ×ö»º³å, ¶øÊÇÿ´Î¶¼¼ÆËã. Äã¿ÉÒÔʹÓøÅÒª·ÖÎöÀ´¼òµ¥µØÕÒ³öÕâЩƿ¾±, Ò»µ©ÕÒµ½
ÁË,
Äã¿ÉÒÔºÜÈÝÒ׵ظÄÕý. µ«ÊÇ, Ðí¶à Java ÐÔÄÜÎÊÌâÀ´×ÔÒ»¸ö¸üÉîµÄ, ¸üÄѸÄÕýµÄÔ´Í· -
-
Ò»¸ö³ÌÐò×é¼þµÄ½Ó¿ÚÉè¼Æ.
½ñÌì´ó¶àÊý³ÌÐòÊÇÓÉÄÚ²¿¿ª·¢µÄ»òÕßÍⲿÂòÀ´µÄ×é¼þ¹¹½¨¶ø³É. ÉõÖÁÔÚ³ÌÐò²»ÊǺܴóµØ
ÒÀÀµ
ÓÚÒѾ­´æÔÚµÄ×é¼þʱ, ÃæÏò¶ÔÏóµÄÉè¼Æ¹ý³ÌÒ²¹ÄÀøÓ¦ÓóÌÐò°ü×°³É×é¼þ, ÕâÑù¾Í¼ò»¯ÁË
Éè
¼Æ, ¿ª·¢ºÍ²âÊÔ¹ý³Ì. ÕâЩÓÅÊÆÊDz»¿É·ñÈϵÄ, ÄãÓ¦¸ÃÈÏʶµ½ÕâЩ×é¼þʵÏֵĽӿڿÉÄÜ

¼«´óµØÓ°ÏìʹÓÃËüÃǵijÌÐòµÄÐÐΪºÍÐÔÄÜ.
ÔÚÕâÒ»µãÉÏ, Äã¿ÉÄÜÒªÎÊʲôÑùµÄ½Ó¿ÚºÍÐÔÄÜÏà¹Ø. Ò»¸öÀàµÄ½Ó¿Ú²»½ö¶¨ÒåÁËÕâ¸öÀà¿É

ÒÔʵÏÖÄÇЩ¹¦ÄÜ, Ò²¿ÉÒÔ¶¨ÒåËüµÄ¶ÔÏó´´½¨ÐÐΪºÍʹÓÃËüµÄ·½·¨µ÷ÓÃÐòÁÐ. Ò»¸öÀàÔõÑù

¶¨ÒåËüµÄ¹¹Ô캯ÊýºÍ·½·¨¾ö¶¨ÁËÒ»¸ö¶ÔÏóÊÇ·ñ¿ÉÒÔÖØÓÃ, ËüµÄ·½·¨ÊÇ·ñÒª´´½¨ -- »òÕß

ÒªÇóËüµÄ¿Í»§¶Ë´´½¨ -- Öмä¶ÔÏó,  ÒÔ¼°Ò»¸ö¿Í»§¶ËÐèÒªµ÷ÓöàÉÙ·½·¨À´Ê¹ÓÃÕâ¸öÀà.

ÕâЩÒòËض¼»áÓ°Ïì³ÌÐòµÄÐÔÄÜ.
[b][u]×¢Òâ¶ÔÏóµÄ´´½¨[/u][/b]
Ò»¸ö×î»ù±¾µÄ Java ÐÔÄܹÜÀíÔ­Ôò¾ÍÊÇ: ±ÜÃâ´óÁ¿µÄ¶ÔÏó´´½¨. Õâ²»ÊÇ˵ÄãÓ¦¸Ã²»´´½¨

ÈκζÔÏó¶ø·ÅÆúÃæÏò¶ÔÏóµÄºÃ´¦. µ«ÊÇÄã±ØÐëÔÚÖ´ÐÐÐÔÄÜÏà¹ØµÄ´úÂëʱ, ÔÚ½ôÑ­»·ÖÐ×¢
Òâ
¶ÔÏóµÄ´´½¨. ¶ÔÏóµÄ´´½¨ÊÇÈç´ËµØ¸ß´ú¼Û, ÒÔÖÁÓÚÄãÓ¦¸ÃÔÚÒªÇóÐÔÄܵÄÇé¿öϱÜÃâ²»±Ø
Òª
µÄÁÙʱ»òÕßÖмä¶ÔÏóµÄ´´½¨.
String ÀàÊÇÔÚÄÇЩ´¦ÀíÎı¾µÄ³ÌÐòÖжÔÏó´´½¨µÄÖ÷ÒªÀ´Ô´. ÒòΪ String ÊDz»¿ÉÐ޸ĵÄ
,
ÿµ±Ò»¸ö String Ð޸Ļò´´½¨, ¾Í±ØÐë´´½¨Ò»¸öеĶÔÏó. ½á¹û¾ÍÊÇ, ¹Ø×¢ÐÔÄܵijÌÐò
Ó¦
¸Ã±ÜÃâ´óÁ¿ String µÄʹÓÃ. µ«ÊÇ, Õâͨ³£ÊDz»¿ÉÄܵÄ. ÉõÖÁµ±Äã´ÓÄãµÄ´úÂëÖÐÍêÈ«³ý
È¥
¶Ô String µÄÒÀÀµ, Äã³£³£»á·¢ÏÖÄã×Ô¼ºÔÚʹÓÃһЩ¾ßÓиù¾Ý String ¶¨ÒåµÄ½Ó¿ÚµÄ×é
¼þ.
ËùÒÔ, Äã×îºó²»µÃ²»Ê¹ÓàString.
[b][u]Àý×Ó: Õý¹æ±í´ïʽƥÅä[/u][/b]
×÷Ϊһ¸öÀý×Ó, ¼ÙÉèÄãдһ¸ö½Ð×ö MailBot µÄÓʼþ·þÎñÆ÷. MailBot ÐèÒª´¦Àí MIME Í·
¸ñ
ʽ -- Ïó·¢ËÍÈÕÆÚ»òÕß·¢ËÍÕߵĠemail µØÖ· -- ÔÚÿ¸öÐÅÏ¢µÄ¶¥²¿. Ê¹ÓÃÒ»¸öÆ¥ÅäÕý¹æ

±í´ïʽµÄ×é¼þÀ´Ê¹´¦Àí MIME Í·µÄ¹ý³Ì¼òµ¥Ò»Ð©. MailBot ×ã¹»´ÏÃ÷, ²»ÎªÃ¿¸öÍ·µÄÐÐ

»òÕßÍ·µÄÔªËØ´´½¨Ò»¸ö String ¶ÔÏó. Ïà·´, ËüÓÃÊäÈëµÄÎı¾Ìî³äÁËÒ»¸ö×Ö·û»º³åÇø, 
ͨ
¹ý¶Ô»º³åÇøµÄË÷ÒýÀ´È·¶¨Òª´¦ÀíµÄÍ·µÄλÖÃ. MailBot »áµ÷ÓÃÕý¹æ±í´ïʽƥÅäÆ÷À´´¦Àí
ÿ
¸öÍ·ÐÐ, ËùÒÔÆ¥ÅäÆ÷µÄÐÔÄܾͷdz£ÖØÒª. ÎÒÃÇÒÔÒ»¸öÕý¹æ±í´ïʽƥÅäÆ÷ÀàµÄ×¾ÁӵĽÓ
¿Ú×÷ΪÀý×Ó:
public class AwfulRegExpMatcher {
  /** Create a matcher with the given regular expression and which will
      operate on the given input string */
  public AwfulRegExpMatcher(String regExp, String inputText);
  /** Retrieve the next match of the pattern against the input text,
      returning the matched text if possible or null if not */
  public String getNextMatch();
}
ÉõÖÁÔÚÕâ¸öÀàʵÏÖÁËÒ»¸öÓÐЧµÄÕý¹æ±í´ïʽƥÅäµÄËã·¨µÄʱºò, ÈκδóÁ¿Ê¹ÓÃËüµÄ³ÌÐò

ÈÔÈ»ÄÑÒÔÈÌÊÜ. ¼ÈȻƥÅäÆ÷¶ÔÏóºÍÊäÈëµÄÎı¾ÁªÏµÆðÀ´, Ã¿Ò»´ÎÄãµ÷ÓÃËü, Äã±ØÐë´´½¨

Ò»¸öеÄÆ¥ÅäÆ÷¶ÔÏó. ¼ÈÈ»ÄãµÄÄ¿±êÊǼõÉÙ²»±ØÒªµÄ¶ÔÏóµÄ´´½¨, ÄÇôʹÕâ¸öÆ¥ÅäÆ÷¿É
ÒÔÖØÖØÓ
½«»áÊÇÒ»¸öÃ÷ÏԵĿªÊ¼.
ÏÂÃæµÄÀඨÒåÑÝʾÁËÄãµÄÆ¥ÅäÆ÷µÄÁíÒ»¸ö¿ÉÄܵĽӿÚ, ÔÊÐíÄãÖØÓÃÕâ¸öÆ¥ÅäÆ÷, µ«ÈÔÈ»

ºÜ»µ.
public class BadRegExpMatcher {
  public BadRegExpMatcher(String regExp);
  /** Attempts to match the specified regular expression against the input
      text, returning the matched text if possible or null if not */
  public String match(String inputText);
  /** Get the next match against the input text, or return null if no match 
*/
  public String getNextMatch();
}
ºöÂÔÕý¹æ±í´ïʽƥÅäÖеľ«Ï¸µã -- Ïó·µ»ØÆ¥ÅäµÄ×Ó±í´ïʽ, Õâ¸ö¿´ÆðÀ´ÎÞº¦µÄÀඨÒå

»á³öʲôÎÊÌâÄØ? ´Ó¹¦ÄÜÉÏÀ´¿´, Ã»ÓÐ. µ«ÊÇ´ÓÐÔÄܵĽǶÈÀ´¿´, Ðí¶à. Ê×ÏÈ, Æ¥ÅäÆ÷

ÐèÒªËüµÄµ÷ÓÃÕß´´½¨Ò»¸ö String À´´ú±íҪƥÅäµÄÎı¾. MailBot ÊÔͼ±ÜÃâ´´½¨ Strin
g
¶ÔÏó, µ«Êǵ±ËüÒªÕÒµ½Ò»¸öÒª×öÕý¹æ±í´ïʽ½âÎöµÄͷʱ, Ëü²»µÃ²»´´½¨Ò»¸ö String À´

Âú×ã BadRegExpMatcher:
BadRegExpMatcher dateMatcher = new BadRegExpMatcher(...);
while (...) {
  ...
  String headerLine = new String(myBuffer, thisHeaderStart,
  thisHeaderEnd-thisHeaderStart);
  String result = dateMatcher.match(headerLine);
  if (result == null) { ... }
}
µÚ¶þ, Æ¥ÅäÆ÷´´½¨Á˽á¹û×Ö·û´®ÉõÖÁµ± MailBot Ö»¹ØÐÄÊÇ·ñÆ¥ÅäÁË, ²»ÐèҪƥÅäµÄÎı¾
ʱ,
ÕâÒâζ×ÅÒª¼òµ¥Ê¹ÓàBadRegExpMatcher À´È·ÈÏÒ»¸öÈÕÆÚÍ·ÊÇ·ñÆ¥ÅäÒ»¸öÌض¨µÄ¸ñʽ, 
Äã
±ØÐë´´½¨Á½¸ö String ¶ÔÏó -- Æ¥ÅäÆ÷µÄÊäÈëºÍÆ¥ÅäµÄ½á¹û. Á½¸ö¶ÔÏó¿ÉÄÜ¿´ÆðÀ´²»¶à
,
µ«ÊÇÈç¹ûÄã¸ø MailBot ´¦ÀíµÄÿ¸öÓʼþµÄÿ¸öÍ·Ðж¼´´½¨Á½¸ö¶ÔÏó, Õâ»á¼«´óµØÓ°Ïì
ÐÔÄÜ. ´íÎó²»ÔÚÓÚ MailBot µÄÉè¼Æ, ¶øÔÚÓÚ BadRegExpMatcher ÀàµÄÉè¼Æ -- »òÕßʹÓÃ
.
×¢Òâ·µ»ØÒ»¸öÇáÁ¿Ð͵ĠMatch ¶ÔÏó -- ¿ÉÒÔÌṩ getOffset(), getLength(),
egetMatchString() ·½·¨ -- ¶ø²»ÊÇ·µ»ØÒ»¸ö String, Õâ²»»áºÜ´óÌá¸ßÐÔÄÜ. ÒòΪ´´½¨

Ò»¸ö Match ¶ÔÏó¿ÉÄܱȴ´½¨Ò»¸ö String ´ú¼ÛҪС -- °üÀ¨²úÉúÒ»¸ö char[] Êý×éºÍ
¸´ÖÆÊý¾Ý, ÄãÈÔÈ»´´½¨ÁËÒ»¸öÖмä¶ÔÏó, ¶ÔÄãµÄµ÷ÓÃÕßÀ´ËµÃ»ÓмÛÖµ.
ÕâÒѾ­×ã¹»»µÁË, BadREgExpMatcher Ç¿ÆÈÄãʹÓÃËüÏë¿´µ½µÄÊäÈëÐÎʽ, ¶ø²»ÊÇÄã¿ÉÒÔ
ÌṩµÄ¸üÓÐЧµÄÐÎʽ. µ«ÊÇʹÓàBadRegExpMathcer »¹ÓÐÁíÒ»¸öΣÏÕ, Ç±Ôڵظø MailB
ot
µÄÐÔÄÜ´øÀ´¸ü´óµÄðÏÕ: ÔÚ´¦ÀíÓʼþÍ·µÄʱºò, Ä㿪ʼÓбÜÃâʹÓàString µÄÇãÏò. µ«
ÊÇ
¼ÈÈ»Äã±»ÆÈ´´½¨Ðí¶à String ¶ÔÏóÀ´Âú×ã BadRegExpMatcher, Äã¿ÉÄܱ»ÒýÓÕ¶ø·ÅÆúÕâ¸ö

Ä¿±ê, ¸ü¼Ó×ÔÓɵØʹÓàString. ÏÖÔÚ, Ò»¸ö×é¼þµÄÔã¸âµÄÉè¼ÆÒѾ­Ó°ÏìÁËʹÓÃËüµÄ³ÌÐò
.
ÉõÖÁÄãºóÀ´ÕÒµ½ÁËÒ»¸ö¸üºÃµÄÕý¹æ±í´ïʽµÄ×é¼þ, ²»ÐèÒªÄãÌṩһ¸ö String, ÄÇʱÄãµÄ

Õû¸ö³ÌÐò¶¼»áÊÜÓ°Ïì.
[b][u]Ò»¸öºÃһЩµÄ½Ó¿Ú[/u][/b]
ÄãÔõÑù¶¨Òå BadRegExpMatcher, ¶ø²»ÒýÆðÕâÑùµÄÎÊÌâÄØ? Ê×ÏÈ, BadRegExpMatcher Ó¦
¸Ã
²»¹æ¶¨ËüµÄÊäÈë. ËüÓ¦¸Ã¿ÉÒÔ½ÓÊÜËüµÄµ÷ÓÃÕßÄܹ»ÓÐЧÌṩµÄ¸÷ÖÖÊäÈë¸ñʽ. µÚ¶þ, Ëü

²»Ó¦¸Ã×Ô¶¯¸øÆ¥Åä½á¹û²úÉúÒ»¸ö String; Ó¦¸Ã·µ»Ø×ã¹»µÄÐÅÏ¢, ÕâÑùµ÷ÓÃÕßÈç¹ûÔ¸ÒâµÄ

»°¿ÉÒÔÉú³ÉËü. (Ϊ·½±ã×ÅÏë, Ëü¿ÉÒÔÌṩһ¸ö·½·¨À´×öÕâ¼þÊÂ, µ«²»ÊDZØÐëµÄ) ÕâÀï
ÓÐÒ»¸öºÃһЩµÄ½Ó¿Ú:
class BetterRegExpMatcher {
  public BetterRegExpMatcher(...);
  /** Provide matchers for multiple formats of input -- String,
      character array, and subset of character array.  Return -1 if no
      match was made; return offset of match start if a match was
      made.  */
  public int match(String inputText);
  public int match(char[] inputText);
  public int match(char[] inputText, int offset, int length);
  /** Get the next match against the input text, if any */
  public int getNextMatch();
  /** If a match was made, returns the length of the match; between
      the offset and the length, the caller should be able to
      reconstruct the match text from the offset and length */
  public int getMatchLength();
  /** Convenience routine to get the match string, in the event the
      caller happens to wants a String */
  public String getMatchText();
}
еĽӿڼõÉÙÁ˵÷ÓÃÕß°ÑÊäÈëת»»³ÉÆ¥ÅäÆ÷Ï£ÍûµÄ¸ñʽÕâ¸öÒªÇó. MailBot ÏÖÔÚ¿ÉÒÔÏó

ÏÂÃæÕâÑùµ÷Óàmatch():
int resultOffset = dateMatcher.match(myBuffer, thisHeaderStart,
thisHeaderEnd-thisHeaderStart);
if (resultOffset < 0) { ... }
Õâ¾Í½â¾öÁ˲»´´½¨ÈκÎжÔÏóµÄÄ¿±ê. ×÷Ϊһ¸ö¸½¼ÓµÄ½±Àø, ËüµÄ½Ó¿ÚÉè¼Æ·ç¸ñ¼Óµ½ÁË

Java µÄ "lots-of-simgle-methos" Éè¼ÆÕÜѧÖÐ.
¶îÍâµÄ¶ÔÏó´´½¨¸øÐÔÄܵÄÈ·Çеijå»÷ÒÀÀµÓÚ matth() Ëù×÷µÄ¹¤×÷Á¿. Äã¿ÉÒÔͨ¹ý´´½¨ºÍ
¼ÆÊ
Á½¸öÕý¹æ±í´ïʽƥÅäÆ÷Àà, À´È·¶¨Ò»¸öÐÔÄܲî±ðµÄÉÏÏÞ. ÔÚ Sun JDK 1.3 ÖÐ, ÉÏÃæ
µÄ´úÂë
Ƭ¶ÎÔÚ BetterRegExpMatcher ÀàÖдóÔ¼±È BadRegExpMatcher ÀàÒª¿ì 50 ±¶×óÓÒ. Ê¹ÓÃ
Ò»¸
¼òµ¥µÄ×Ö´®Æ¥ÅäµÄʵÏÖ, BetterRegExpMatcher ±È Ïà¶ÔÓ¦µÄ BadRegExpMatcher Òª
¿ì 5 ±¶
[b][u]½»»»ÀàÐÍ[/u][/b]
BadRegExpMatcher Ç¿ÆÈ MailBot °ÑÊäÈëÎı¾´Ó×Ö·ûÊý×éת»»³É String, ½á¹ûÊÇÔì³ÉÁË

һЩ²»±ØÒªµÄ¶ÔÏóµÄ´´½¨. ¸ü¾ß·í´ÌÒâζµÄÊÇ, BadRegExpMatcher µÄÐí¶àʵÏÖ¶¼Á¢¼´
°Ñ String ×ª»»³ÉÒ»¸ö×Ö·ûÊý×é, Ê¹ËüÈÝÒ׶ÔÊäÈëÎı¾½øÐзÃÎÊ. ÕâÑù²»½ö½öÉêÇëÁËÁí
Ò»¸ö¸ö¶
Ïó, ²¢ÇÒ»¹Òâζ×ÅÄã×öÍêÁËËùÓеŤ×÷, ×îºóµÄÐÎʽºÍ¿ªÊ¼Ê±Ò»Ñù. MailBot 
ºÍ BadRegExppMatcher
¶¼²»Ïë´¦Àí String -- String Ö»ÊÇ¿´ÆðÀ´ÏóÊÇÔÚ×é¼þÖ®¼ä´«µÝÎı¾µÄºÜÃ÷ÏԵĸñʽ.
ÔÚÉÏÃæµÄ BadRegExpMatcher Àý×ÓÖÐ, String ÀàÊÇ×÷Ϊһ¸ö½»»»ÀàÐ͵Ä. Ò»¸ö½»»»ÀàÐÍ

ÊÇÒ»ÖÖ²»¹ÜÊǵ÷ÓÃÕß»¹ÊDZ»µ÷ÓÃÕ߶¼²»ÏëʹÓûòÕßÒÔËü×÷ΪÊý¾Ý¸ñʽµÄÒ»ÖÖÀàÐÍ, µ«ÊÇ

Á½¸ö¶¼ÄܺÜÈÝÒ×µØת»»Ëü»òÕß´ÓËüת»». ÒÔ½»»»ÀàÐͶ¨Òå½Ó¿ÚÔÚ±£³ÖÁé»îÐÔµÄͬʱ¼õÉÙ
ÁË
½Ó¿ÚµÄ¸´ÔÓÐÔ, µ«ÊÇÓÐʱ¼òµ¥ÐÔµ¼ÖÂÁ˸ߴú¼ÛµÄÐÔÄÜ.
Ò»¸ö½»»»ÀàÐÍ×îµäÐ͵ÄÀý×ÓÊÇ JDBC ResultSet ½Ó¿Ú. Ëü²»¿ÉÄÜÏóÈκα¾µØÊý¾Ý¿âÌṩ
µÄ
Êý¾Ý¼¯Ò»ÑùÌṩËüµÄ ResultSet ½Ó¿Ú, µ«ÊÇ JDBC Çý¶¯Í¨¹ýʵÏÖÒ»¸ö ResultSet ¿ÉÒÔ
ºÜ
ÈÝÒ׵ذÑÊý¾Ý¿âÌṩµÄ±¾µØÊý¾Ý±íʾ°ü×°ÆðÀ´. Í¬Ñù, ¿Í»§¶Ë³ÌÐòÒ²²»ÄÜÏóÕâÑù±íʾÊý
¾Ý
¼Ç¼, µ«ÊÇÄ㼸ºõ¿ÉÒÔûÓÐÀ§ÄѵذѠResultSet ×ª»»ÎªÏëÒªµÄÊý¾Ý±íʾ. ÔÚ JDBC µÄÀý
×ÓÖÖÐ,
Äã½ÓÊÜÁËÕâ¸ö²ã´ÎµÄ»¨·Ñ, ÒòΪËü´øÀ´Á˱ê×¼»¯ºÍ¿çÊý¾Ý¿âʵÏֵĿÉÒÆÖ²ÐԵĺô¦. µ«
ÊÇ,
ҪעÒâ½»»»ÀàÐÍ´øÀ´µÄÐÔÄÜ´ú¼Û.
ÕâÍêÈ«²»ÖµµÃ, Ê¹Óý»»»ÀàÐͶÔÐÔÄܵijå»÷²»ÈÝÒ׶ÈÁ¿. Èç¹ûÄã¶ÔÉÏÃæµ÷ÓàBadRegExp
Matccher
µÄ´úÂëƬ¶Î×ö²âÊԵĻ°, Ëü»áÔÚÔËÐÐʱ´´½¨ MailBot µÄÊäÈë String; µ«ÊÇ, String µÄ
²úÉ
Ö»ÓÃÀ´Âú×ã BadRegExpMatcher. Èç¹ûÄãÏëÆÀ¶¨Ò»¸ö×é¼þ¶Ô³ÌÐòÐÔÄܵÄÕæÕýµÄ³å»÷,
 ÄãÓ¦¸Ã²²»½ö
½ö¶ÈÁ¿ËüµÄ´úÂëµÄ×ÊԴʹÓÃ×´¿ö, »¹ÓÐÄÇЩʹÓÃËüºÍ»Ö¸´µÄ´úÂë. Õâ¶ÔÓÚ
±ê×¼µÄ²âÊÔ¹¤¾ßÀ´À´Ë
ºÜÄÑÍê³É.
[b][u]½áÂÛ[/u][/b]
²»ÊÇËùÓеijÌÐò¶¼¹Ø×¢ÓÚÐÔÄܵÄ, ²»ÊÇËùÓеijÌÐò¶¼ÓÐÐÔÄÜÎÊÌâ. µ«ÊǶÔÄÇЩ¹Ø×¢ÕâЩ

µÄ³ÌÐò, ÕâƪÎÄÕÂËùÌáµ½µÄ¶¼ºÜÖØÒª, ÒòΪËüÃDz»ÊÇÔÚ×îºóÒ»·ÖÖӾͿÉÒÔÐ޸ĵÄ. ¼ÈÈ»
ÔÚ
Äã±àдд´úÂëʹÓÃÒ»¸öÀàÒÔºóÔÙÐÞ¸ÄËüµÄ½Ó¿Ú·Ç³£À§ÄÑ, ÄÇôÔÚÄãµÄÉè¼ÆʱÆھͻ¨·ÑÒ»
µã
¶îÍâµÄʱ¼äÀ´¿¼ÂÇÐÔÄÜÌØÐÔ.
ÔÚµÚ¶þ²¿·Ö, ÎÒ»áÑÝʾһЩÀûÓÿÉÐÞ¸ÄÐԺͲ»¿ÉÐÞ¸ÄÐÔÀ´¼õÉÙ²»±ØÒªµÄ¶ÔÏó´´½¨µÄ·½·¨
.
About the author
Brian Goetz is a professional software developer with over 15 years of exper
iencce.
He is a principal consultant at Quiotix, a software development and consulti
ng
firm located in Los Altos, Calif.
µÄ³ÌÐò, ÕâƪÎÄÕÂËùÌáµ½µÄ¶¼ºÜÖØÒª, ÒòΪËüÃDz»ÊÇÔÚ×îºóÒ»·ÖÖӾͿÉÒÔÐ޸ĵÄ. ¼ÈÈ»
ÔÚ
Äã±àдд´úÂëʹÓÃÒ»¸öÀàÒÔºóÔÙÐÞ¸ÄËüµÄ½Ó¿Ú·Ç³£À§ÄÑ, ÄÇôÔÚÄãµÄÉè¼ÆʱÆھͻ¨·ÑÒ»
µã
¶îÍâµÄʱ¼äÀ´¿¼ÂÇÐÔÄÜÌØÐÔ.
ÔÚµÚ¶þ²¿·Ö, ÎÒ»áÑÝʾһЩÀûÓÿÉÐÞ¸ÄÐԺͲ»¿ÉÐÞ¸ÄÐÔÀ´¼õÉÙ²»±ØÒªµÄ¶ÔÏó´´½¨µÄ·½·¨
.
About the author
Brian Goetz is a professional software developer with over 15 years of exper
ienc
He is a principal consultant at Quiotix, a software development and consulti
ng
firm located in Los Altos, Calif.
--
°®µÄ·´ÃæÊÇʲô? ºÞÂð? ²»ÊÇ, Èç¹ûÒ»¸öÈ˺ÞÄãÒ»±²×Ó,
ÕâÒ²ºÜÄѵÃ, »òÐíËû(Ëý)¾ÍÊÇ°®ÁËÄãÒ»±²×Ó, ²»ÔøÍü¼Ç.
°®µÄ·´ÃæÊÇÀäÄ®. ¼ûÃæ¶øÈçͬİ·, °®Ò»¸öÈË, ²»»áÍü
¼Ç, ÄÇÒ»·Ý¸Ð¾õ»áÓÀÔ¶´æÔÚ.
      SuperMMX.dhs.org ×ÔÓÉ SuperMMX
ÌÖÂÛ×ÔÓÉÈí¼þ, °üÀ¨ linux ºÍ java µÈ·½Ãæ.
.x;
  int y = component.getBounds().y;
  int h = component.getBounds().height;
  int w = component.getBounds().width;
[/code]
ÔÚ String µÄÇé¿öÖÐ, ¶ÔÏó´´½¨ÊDZØÒªµÄ, ÒòΪ String ÊDz»¿É±äµÄ. µ«ÔÚÕâ¸öÀý×ÓÖÐ
,¶ÔÏóµÄ´´½¨Ò²ÊDZØÒªµÄ, ÒòΪ Rect¯«
--
¾Ý˵´ôÍÞ¶ù²»±¿

¡ù À´Ô´:¡¤¹þ¹¤´ó×϶¡Ïã bbs.hit.edu.cn¡¤[FROM: 202.118.245.178]
[°Ù±¦Ïä] [·µ»ØÊ×Ò³] [Éϼ¶Ä¿Â¼] [¸ùĿ¼] [·µ»Ø¶¥²¿] [Ë¢ÐÂ] [·µ»Ø]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
Ò³ÃæÖ´ÐÐʱ¼ä£º206.074ºÁÃë