【勘误】C# 2005 & .Net 3.0高级编程 勘误(三)

来源:互联网 发布:昆山法院淘宝网拍卖 编辑:程序博客网 时间:2024/05/17 22:24

    C# 2005 & .Net 3.0高级编程

    

  第5版 第8章集合 8.2.3显示结果

 

  page 216、217

 

  原文:

 

static void Main()
{

   Find1();

   Console.ReadLine();
}

 

  很不幸,书上提供的代码是Find2,翻阅第6版的扫描版(page 198、199),问题一样,没办法,在网上找英文版,英文版的书写也是一样错误。

  翻看第5版及第6版的源代码,源代码与书上的引用的字符串不一致,当然结果也不会一致。

  英文版图书为CHM格式,下载地址为:http://ajax.cnrui.cn/soft/4/42/2007/20070822589.html

  

  随书源代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace Wrox.ProCSharp.RegularExpressionPlayaround
{
   class MainEntryPoint
   {
      static void Main()
      {
         Find1();
         Console.ReadLine();
      }

      static void Find1()
      {
         string text = @"XML has made a major impact in almost every aspect of
            software development. Designed as an open, extensible, self-describing
            language, it has become the standard for data and document delivery on
            the web. The panoply of XML-related technologies continues to develop
            at breakneck speed, to enable validation, navigation, transformation,
            linking, querying, description, and messaging of data.";
         string pattern = @"/bn/S*ion/b";
         MatchCollection matches = Regex.Matches(text, pattern,
            RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace |
            RegexOptions.ExplicitCapture);
         WriteMatches(text, matches);
      }  

      static void Find2()
      {
         string text = @"XML has made a major impact in almost every aspect of
            software development. Designed as an open, extensible, self-describing
            language, it has become the standard for data and document delivery on
            the web. The panoply of XML-related technologies continues to develop
            at breakneck speed, to enable validation, navigation, transformation,
            linking, querying, description, and messaging of data.";
         string pattern = @"/bn";
         MatchCollection matches = Regex.Matches(text, pattern,
           RegexOptions.IgnoreCase);
         WriteMatches(text, matches);
      }

      static void WriteMatches(string text, MatchCollection matches)
      {
         Console.WriteLine("Original text was: /n/n" + text + "/n");
         Console.WriteLine("No. of matches: " + matches.Count);
         foreach (Match nextMatch in matches)
         {
            int Index = nextMatch.Index;
            string result = nextMatch.ToString();
            int charsBefore = (Index < 5) ? Index : 5;
            int fromEnd = text.Length - Index - result.Length;
            int charsAfter = (fromEnd < 5) ? fromEnd : 5;
            int charsToDisplay = charsBefore + charsAfter + result.Length;

            Console.WriteLine("Index: {0}, /tString: {1}, /t{2}",
               Index, result,
               text.Substring(Index - charsBefore, charsToDisplay));

         }
      }
   }
}

原创粉丝点击