using System;
using System.Collections.Generic;
using System.Text;
//引入正则表达式命名空间
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
    /*
     *   2.给出将字符串中连续出现两次单词,替换为一个单词,
     *   如: this is      is           a       boy
     *   正则表达式替换后为 this is a boy ,
    */

    class Program
    {
        static void Main(string[] args)
        {

            string s = "this is      is           a       boy";
            Change(s);
        }

        static string Change(string s)
        {
            /*把字符串中多余的空格去掉:
             * [\040],表示单个空格;{2,},表示2个或2个以上。
             * Regex.Replace(s, @"[\040]{2,}", " "),就是把字符串s中
             * 2个或两个以上的空格替换成一个空格。
             */
            s =Regex.Replace(s, @"[\040]{2,}", " ");
            //把字符串s按空格拆分,把单词存入数组array中
            string[] array = s.Split(new char[] {' '});
            // \w,包括a-z,A-Z,0-9,_;
            //+,表示1个或多个
            Regex regex = new Regex(@"\w+");
            List<string> list = new List<string>();
            Console.WriteLine("array:begin");
            Console.WriteLine("---------------------");
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine(array[i]);

                if (regex.IsMatch(array[i]))
                {
                    list.Add(array[i]);
                }
            }
            Console.WriteLine("---------------------");
            Console.WriteLine("array:end\n");


            Console.WriteLine("collection:begin");
            Console.WriteLine("---------------------");
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);

            }
            Console.WriteLine("---------------------");
            Console.WriteLine("collection:end\n");


            for (int i = 0; i < list.Count-1; i++)
            {
                //把集合中的每一个元素,与其后面的元素比较,如果匹配,移除后面的元素!
                regex = new Regex(list[i]);
                if (regex.IsMatch(list[i+1]))
                {
                    list.RemoveAt(i+1);
                    i--;
                }
            }

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < list.Count; i++)
            {
                sb.Append(list[i]+" ");
            }

          
            Console.WriteLine("result:\n");
            Console.WriteLine("------------------------");
            string result = sb.ToString(0,sb.Length-1);
            Console.WriteLine(result);

            return result;
        }

     
    }

}