正则的使用展示 (整体贴)

来源:互联网 发布:eamic软件下载 编辑:程序博客网 时间:2024/06/05 16:48

 

using System;
using System.Text.RegularExpressions;

class Program
{
   
static void Main(string[] args)
    {
       
string str = "<You're angle & evil>";
       
string pattern = "'|&|<|>";

        Regex regex
= new Regex(pattern);

        Program prog
= new Program();
        MatchEvaluator evaluator
= new MatchEvaluator(prog.ConvertToXML);
        Console.WriteLine(regex.Replace(str, evaluator));
        Console.Read();
    }

   
//把正则表达式的匹配到的字符转换成xml能正常识别的标识
    public string ConvertToXML(Match m)
    {
              
//string s0=m.Groups[0].Value;
          
//string s1=m.Groups[1].Value;
          
//string s2=m.Groups[2].Value;
        switch (m.Value)
        {
           
case "'":
               
return "&apos";
           
case "&":
               
return "&amp";
           
case "<":
               
return "&lt";
           
case ">":
               
return "&gt";
           
default:
               
return "";                   
        }
    }
}

 

 

string str = "<You're angle & evil>";
       
string pattern = "['&<>]";
       
//str = Regex.Replace(str, pattern, new MatchEvaluator(delegate(Match m) {             // or              
        str = Regex.Replace(str, pattern, m =>
        {
           
switch (m.Value)
            {
               
case "'":
                   
return "&apos";
               
case "&":
                   
return "&amp";
               
case "<":
                   
return "&lt";
               
case ">":
                   
return "&gt";
               
default:
                   
return "";
            }
        });

 

 

 

struct UInt96
{
 
ulong hi;
 
uint  lo;
 
 
// 构造函数
  public UInt96(ulong h, uint l)
  {
    hi
= h;
    lo
= l;
  }
 
 
// 返回加1后的结果
  public UInt96 Inc()
  {
   
if (lo < 0xFFFFFFFF) return new UInt96(hi, lo + 1);
   
return new UInt96(hi + 1, 0);
  }
 
 
// 自增运算符
  public static UInt96 operator ++(UInt96 x)
  {
   
return x.Inc();
  }
 
 
// 十六进制字符串表示
  public override string ToString()
  {
   
return string.Join(" ", Regex.Split(string.Format("{0:X16}{1:X8}", hi, lo), "(?!^)(?=(?:.{4})+$)"));
  }
}

 

 

 

 

string s = "1234567890";
string t = string.Join(" ", Regex.Split(s, "(?!^)(?=(?:.{4})+$)"));
// 就是把一个字符串从右往左每4位加一个空格,结果是:"12 3456 7890"

 

 

string s = "1234567890";

// 考虑了一下,这样更简单:
string t = Regex.Replace(s, "(?!^)(?=(?:.{4})+$)", " ");
// 把一个字符串从右往左每4位加一个空格,结果是:"12 3456 7890"

 

 

 

// 去掉SQL语句中的注释
  static string RemoveSqlComment(string sql)
  {
   
return Regex.Replace
    (
      sql,
     
@"(?ms)'[^']*'|--.*?$|//*.*?/*/",
     
delegate(Match m)
      {
       
switch (m.Value[0])
        {
         
case '-': return "";
         
case '/': return " ";
         
default : return m.Value;

 

         }

       }

    );

  }

 

 

string s = "某某的面积是12345678平方米";
   
string t = Regex.Replace(s, @"(?<=/d)(?=(/d/d/d)+(?!/d))", ",");
   
// 同理,这个正则的作用是把一串数字每3位加一个逗号。
    Console.WriteLine(t); // 输出:某某的面积是12,345,678平方米

using System;
using System.Text.RegularExpressions;

class Program
{
 
// 把阿拉伯数字的金额转换为中文大写数字
  static string ConvertToChinese(double x)
  {
   
string s = x.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
   
string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L/.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[/.]|$))))", "${b}${z}");
   
return Regex.Replace(d, ".", delegate(Match m) { return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟萬億兆京垓秭穰"[m.Value[0] - '-'].ToString(); });
  }

 
static void Main()
  {
    Random r
= new Random();
   
for (int i = 0; i < 10; i++)
    {
     
double x = r.Next() / 100.0;
      Console.WriteLine(
"{0,14:N2}: {1}", x, ConvertToChinese(x));
    }
  }
}
/* 可能的输出:
  5,607,400.68: 伍佰陆拾萬柒仟肆佰元陆角捌分
  2,017,723.33: 贰佰零壹萬柒仟柒佰贰拾叁元叁角叁分
    751,181.17: 柒拾伍萬壹仟壹佰捌拾壹元壹角柒分
  7,849,851.53: 柒佰捌拾肆萬玖仟捌佰伍拾壹元伍角叁分
  2,629,143.90: 贰佰陆拾贰萬玖仟壹佰肆拾叁元玖角
13,461,629.68: 壹仟叁佰肆拾陆萬壹仟陆佰贰拾玖元陆角捌分
  4,594,391.16: 肆佰伍拾玖萬肆仟叁佰玖拾壹元壹角陆分
13,046,560.60: 壹仟叁佰零肆萬陆仟伍佰陆拾元陆角
13,041,371.21: 壹仟叁佰零肆萬壹仟叁佰柒拾壹元贰角壹分
20,639,609.44: 贰仟零陆拾叁萬玖仟陆佰零玖元肆角肆分
*/

 

原创粉丝点击