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;
}
}
}