博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#-string,StringBuilder和Regex类的讲解

Posted on 2009-04-30 08:30  linFen  阅读(1437)  评论(0编辑  收藏  举报
讲解

字符串的声明与初始化以及获得字符串的长度范例
  范例一
using System;

namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
   string string1;//声明一个名称为string1的字符串
   string1="I Love C#";//对string1进行赋值为"I Love C#",注意不要忘记 "" 符号
   Console.WriteLine("string1={0}",string1);
   Console.WriteLine("string1的长度为{0}",string1.Length);

   string string2="I Love C#";//声明一个名称为string2的字符串并且赋值为"I Love C#"
   Console.WriteLine("string2={0}",string2);
   Console.WriteLine("string2的长度为{0}",string2.Length);
  }
 }
}
运行结果
string1=I Love C#
string1的长度为9
string2=I Love C#
string2的长度为9
Press any key to continue


2:利用“+”运算符将两个字符串或者多个字符串相连接以及Concat()方法的用法

  范例一
using System;

namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string string1;//声明一个名称为string1的字符串
   string1="I Love C#";//对string1进行赋值为"I Love C#",注意不要忘记 "" 符号
   Console.WriteLine("string1={0}",string1);

   string string2="I Love Java";//声明一个名称为string2的字符串并且赋值为"I Love C#"
   Console.WriteLine("string2={0}",string2);
           
   Console.WriteLine("运用+运算符将string1和string2进行连接:");
   string string3=string1+" "+string2;
   Console.WriteLine("string3={0}",string3);
  }
 }
}
运行结果
string1=I Love C#
string2=I Love Java
运用+运算符将string1和string2进行连接:
string3=I Love C# I Love Java
Press any key to continue

  范例二:方法Concat()的用法
using System;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string str1="hello java";
   string str2="hello world";
      Console.WriteLine("使用方法Concat()将str1和str2相连后内容为-->{0}",string.Concat(str1," && ",str2));
  }
 }
}
运行结果为:

使用方法Concat()将str1和str2相连后内容为-->hello java && hello world
Press any key to continue

字符串的比较与运算符范例
  范例一
 在下面的范例中需要我们掌握的方法有
1:Compare(string str1,string str2,bool b)如果b为true则在比较的时候忽略大小写,反之为false
2:Compare(string str1,string str2)
3:CompareTo()
4:StartsWith()
5:EndsWith()
6:IndexOf()
7:LastIndexOf()
对于上面的这些方法在下面的范例中可以看出其各自的用法。请看范例
using System;

namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string str1="I Love C#";
   string str2="I Love c#";
   string str3="I Love Java";
   Console.WriteLine("str1是否等于str2:-->{0}",string.Compare(str1,str2));
   Console.WriteLine("str1在忽略大小写的情况下是否等于str2-->{0}",string.Compare(str1,str2,true));
   Console.WriteLine("str1是否等于str3-->{0}",str1.CompareTo(str3));
            Console.WriteLine("str1的第0个字符是否与str3的第0个字符相等-->{0}",string.Compare(str1,0,str2,0,2));
   Console.WriteLine("str1的第7个字符是否与str3的第7个字符相等-->{0}",string.Compare(str1,7,str2,7,2));
   Console.WriteLine("str1的第7个字符是否与str3的第7个字符在忽略大小写的情况下相等-->{0}",string.Compare(str1,7,str2,7,2,true));
   Console.WriteLine("str1是否以字符'I'开头-->{0}",str1.StartsWith("I"));
   Console.WriteLine("str1是否以字符'i'开头-->{0}",str1.StartsWith("i"));
   Console.WriteLine("str2是否以c# 结尾-->{0}",str2.EndsWith("c#"));

            Console.WriteLine("字符串‘L’为字符串{0}第{1}个字符:",str3,str3.IndexOf('L'));
   Console.WriteLine("字符'L'在字符串{0}中最后出现的位置为{1}",str3,str3.LastIndexOf('L'));
  }
 }
}
运行结果
str1是否等于str2:-->1
str1在忽略大小写的情况下是否等于str2-->0
str1是否等于str3-->-1
str1的第0个字符是否与str3的第0个字符相等-->0
str1的第7个字符是否与str3的第7个字符相等-->1
str1的第7个字符是否与str3的第7个字符在忽略大小写的情况下相等-->0
str1是否以字符'I'开头-->True
str1是否以字符'i'开头-->False
str2是否以c# 结尾-->True
字符串‘L’为字符串I Love Java第2个字符:
字符'L'在字符串I Love Java中最后出现的位置为2
Press any key to continue


字符串的分割与获取
   String类提供了一个方法Split用以切割字符串,此方法返回一个所有分割子字符串的数组对象,可以经过数组取得所有分割的子字符串。请看下面的范例
  范例一
using System;

namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string str="How are you:what's you name:I love java";
      string result="";
   char split=':';
   foreach(string s in str.Split(split)){
      result+=s+'\n';
   }
   Console.WriteLine(result);
  }
 }
}
运行结果
How are you
what's you name
I love java

Press any key to continue
范例二
using System;

namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string str="How.are you:what's. you name:I. love java";
      string result="";
   char [] split=new char[] {':','.'};
   foreach(string s in str.Split(split)){
      result+=s+'\n';
   }
   Console.WriteLine(result);
  }
 }
}
运行结果
How
are you
what's
 you name
I
 love java

Press any key to continue
 
  方法Equals()和"=="的用法
范例一
using System;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
                        string str1="hello java";
   string str2="hello java";
   
   Console.WriteLine("str1.Equals(str2)-->{0}",str1.Equals(str2));
   Console.WriteLine("str1==str2-->{0}",(str1==str2));
  }
 }
}
运行结果
str1.Equals(str2)-->True
str1==str2-->True
Press any key to continue

获取字符串范例
  String类提供了Substring(int i)方法,获取变量i以后的子字符串,包括i本身。请看下面的范例
范例一:
using System;

namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string str="zhong hua ren min gong he guo";
   Console.WriteLine("原始字符串为-->{0}",str);
   Console.WriteLine("获取第6个字符以后的字符串为-->{0}",str.Substring(6));

   
  }
 }
}
运行结果
原始字符串为-->zhong hua ren min gong he guo
获取第6个字符以后的字符串为-->hua ren min gong he guo
Press any key to continue

字符的删除,插入,与大小写的转换
  范例一:在下面的范例中需要我们掌握的方法如下
1:TrimStart()
2:TrimEnd()
3:Remove()
4:Insert()
5:PadLeft()
6:PadRight
7:ToUpper()
8:ToLower()
9:Trim()
using System;

namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string str1=" hello";
   string str2="java ";
   string str3=" hello java ";
   Console.WriteLine("str1的原始字符串为{0}-->"+str1);
   Console.WriteLine("使用TrimStart()方法将字符串{0}左边的空格删除后字符串为-->{1}",str1,str1.TrimStart());
   Console.WriteLine("使用remove()方法删除第0个字符以后的3个字符后,str1的内容为-->{0}",str1.Remove(0,3));
   Console.WriteLine("在str1的第6个字符中加入一个字符'*',后str1的内容为-->{0}",str1.Insert(6,"*"));
   Console.WriteLine("在str1的左边加上二个‘+’符号后str1的内容为-->{0}",str1.PadLeft(8,'+'));
   Console.WriteLine("在str1的右边加上二个‘+’符号后str1的内容为-->{0}",str1.PadRight(8,'+'));
   Console.WriteLine("把str1的内容转换为大写后为-->{0}",str1.ToUpper());
   Console.WriteLine("把str1的内容转换为小写后为-->{0}",str1.ToLower());
   Console.WriteLine("_________________________________________________________");
   Console.WriteLine("str2的原始字符串为-->{0}",str2);
   Console.WriteLine("使用TrimEnd()方法将字符串{0}右边的空格删除后字符串为-->{1}",str2,str2.TrimEnd());
   Console.WriteLine("使用remove()方法删除第2个字符以后的2个字符后,str1的内容为-->{0}",str2.Remove(2,3));
   Console.WriteLine("在str2的第4个字符中加入一个字符'*',后str2的内容为-->{0}",str2.Insert(4,"*"));
   Console.WriteLine("在str2的左边加上二个‘+’符号后str2的内容为-->{0}",str2.PadLeft(7,'+'));
   Console.WriteLine("在str2的右边加上二个‘+’符号后str2的内容为-->{0}",str2.PadRight(7,'+'));   
   Console.WriteLine("把str2的内容转换为大写后为-->{0}",str2.ToUpper());
   Console.WriteLine("把str2的内容转换为小写后为-->{0}",str2.ToLower());
   Console.WriteLine("_________________________________________________________");
   Console.WriteLine("str3的原始字符串为-->{0}",str3);
            Console.WriteLine("使用Trim()方法将字符串{0}两边的空格删除后字符串为-->{1}",str3,str3.Trim());
   Console.WriteLine("使用remove()方法删除第6个字符以后的3个字符后,str1的内容为-->{0}",str3.Remove(6,5));
   Console.WriteLine("在str3的第1个字符中加入一个字符'*',在第12个字符中插入‘*’后str3的内容为-->");
   Console.WriteLine(str3.Insert(1,"*").Insert(12,"*"));
   Console.WriteLine("在str3的左边加上二个‘+’符号后str3的内容为-->{0}",str3.PadLeft(14,'+'));
   Console.WriteLine("在str3的右边加上二个‘+’符号后str3的内容为-->{0}",str3.PadRight(14,'+'));
   Console.WriteLine("把str3的内容转换为大写后为-->{0}",str3.ToUpper());
            Console.WriteLine("把str3的内容转换为小写后为-->{0}",str3.ToLower());
  }
 }
}
运行结果
在str1的第6个字符中加入一个字符'*',后str1的内容为--> hello*
在str1的左边加上二个‘+’符号后str1的内容为-->++ hello
在str1的右边加上二个‘+’符号后str1的内容为--> hello++
把str1的内容转换为大写后为--> HELLO
把str1的内容转换为小写后为--> hello
_________________________________________________________
str2的原始字符串为-->java
使用TrimEnd()方法将字符串java 右边的空格删除后字符串为-->java
使用remove()方法删除第2个字符以后的2个字符后,str1的内容为-->ja
在str2的第4个字符中加入一个字符'*',后str2的内容为-->java*
在str2的左边加上二个‘+’符号后str2的内容为-->++java
在str2的右边加上二个‘+’符号后str2的内容为-->java ++
把str2的内容转换为大写后为-->JAVA
把str2的内容转换为小写后为-->java
_________________________________________________________
str3的原始字符串为--> hello java
使用Trim()方法将字符串 hello java 两边的空格删除后字符串为-->hello java
使用remove()方法删除第6个字符以后的3个字符后,str1的内容为--> hello
在str3的第1个字符中加入一个字符'*',在第12个字符中插入‘*’后str3的内容为-->
 *hello java*
在str3的左边加上二个‘+’符号后str3的内容为-->++ hello java
在str3的右边加上二个‘+’符号后str3的内容为--> hello java ++
把str3的内容转换为大写后为--> HELLO JAVA
把str3的内容转换为小写后为--> hello java
Press any key to continue


Join()方法的用法范例
 范例一:
using System;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
   string [] str1={"I","am","a","student"};
   Console.WriteLine("str1的原始内容为:");
   for(int i=0;i<str1.Length;i++){
      Console.Write(str1[i]+" ");
   }
   Console.WriteLine("\n以下是使用Join方法后输出的str1的内容:");
   Console.WriteLine(string.Join(".",str1));
  }
 }
}
运行结果为
str1的原始内容为:
I am a student
以下是使用Join方法后输出的str1的内容:
I.am.a.student
Press any key to continue

Clone()方法的使用范例
  范例一
using System;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
   string str1="hello world";
   Console.WriteLine("str1-->{0}",str1);
   Console.WriteLine("使用Clone()方法创建一个和str1相同的字符串str2");
   string str2=(string)str1.Clone();
   Console.WriteLine("str2-->{0}",str2);
  }
 }
}
运行结果
str1-->hello world
使用Clone()方法创建一个和str1相同的字符串str2
str2-->hello world
Press any key to continue


CopyTo()方法的用法范例
范例一
using System;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
   string str1="hello world";
   char [] array=new char[str1.Length];
   str1.CopyTo(0,array,0,str1.Length);
   Console.WriteLine(str1);
  }
 }
}


StringBuilder类的用法范例
 StringBuilder可以根据情况动态的调整大小,对于其它的我们在这里就不多说了,但是必须记住如果我们要使用StringBuilder,必须将using System.Text导出。下面请看一个 范例,如果掌握了这个范例里出现的方法,那么对于StringBuilder我们也就可以说能运用自如了。
范例一:
在这个范例中出现的方法为
1:Capacity
2:Length
3:Append()
4:Replace()
5:Insert()
6:Remove()
using System;
using System.Text;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            StringBuilder sb1=new StringBuilder();
   Console.WriteLine("sb1的初始容量为:-->{0}",sb1.Capacity);
   Console.WriteLine("sb1的初始长度为:-->{0}",sb1.Length);

   sb1.Append("hello world");
   Console.WriteLine("向sb1中添加后sb1的容量为:-->{0}",sb1.Capacity);
   Console.WriteLine("向sb1中添加后sb1的长度为:-->{0}",sb1.Length);

   sb1.Append(" hello C# zhong hua ren min gong he guo ");
   Console.WriteLine("在次向sb1中添加后sb1的容量为:-->{0}",sb1.Capacity);
   Console.WriteLine("在次向sb1中添加后sb1的长度为:-->{0}",sb1.Length);

   StringBuilder sb2=new StringBuilder("I Love java",30);
   Console.WriteLine("the original text of sb2 are:");
   Console.WriteLine(sb2);
   Console.WriteLine("使用replace方法将sb2中的java换成C#后内容为:");
   Console.WriteLine(sb2.Replace("java","C#"));
            Console.WriteLine("使用insert方法在sb2第七个字符中添加'java and '后sb2的内容为");
   Console.WriteLine(sb2.Insert(7,"java and "));
   Console.WriteLine("使用remove方法将sb2中第0个字符以后的6删除后sb2的内容为:");
   Console.WriteLine(sb2.Remove(0,7));
  
  }
 }
}
运行结果
sb1的初始容量为:-->16
sb1的初始长度为:-->0
向sb1中添加后sb1的容量为:-->16
向sb1中添加后sb1的长度为:-->11
在次向sb1中添加后sb1的容量为:-->52
在次向sb1中添加后sb1的长度为:-->51
the original text of sb2 are:
I Love java
使用replace方法将sb2中的java换成C#后内容为:
I Love C#
使用insert方法在sb2第七个字符中添加'java and '后sb2的内容为
I Love java and C#
使用remove方法将sb2中第0个字符以后的6删除后sb2的内容为:
java and C#
Press any key to continue


正则表达式的用法范例
  在使用正则表达式之前必须将using System.Text.RegularExpressions导出。下面我们就来通过范例来了解一下正则表达式的使用方法。
范例一
using System;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
                        string test="aklsfhkasjlhasdasdfhjkalsfhkljasljkdfhkljasfdjkhasjk";
   string match;
   int count=0;
   while(true){
   Console.WriteLine("原始字符串为-->{0}",test);
   Console.WriteLine("请输入要查找的字符");
   match=Console.ReadLine();
   Regex myregex=new Regex(@match);
   MatchCollection mcl=myregex.Matches(test);
   foreach(Match mymatch in mcl){
    Console.WriteLine("{0}在第{1}个字符被发现!!",mymatch,mymatch.Index);
           count++;
     }
    Console.WriteLine("{0}出现了{1}次",match,count);
    count=0;
   }
  }
 }
}
运行结果
原始字符串为-->aklsfhkasjlhasdasdfhjkalsfhkljasljkdfhkljasfdjkhasjk
请输入要查找的字符
a
a在第0个字符被发现!!
a在第7个字符被发现!!
a在第12个字符被发现!!
a在第15个字符被发现!!
a在第22个字符被发现!!
a在第30个字符被发现!!
a在第41个字符被发现!!
a在第48个字符被发现!!
a出现了8次
原始字符串为-->aklsfhkasjlhasdasdfhjkalsfhkljasljkdfhkljasfdjkhasjk
请输入要查找的字符

范例二
using System;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string str1="use java to write. a program";
   Regex r=new Regex(@"(\.)");
            string []result=r.Split(str1);
   foreach(string s in result){
      Console.WriteLine(s);
   }
   result=Regex.Split(str1,@"(\.)");
   foreach(string s in result){
     Console.WriteLine(s);
   }
  }
 }
}
运行结果
use java to write
.
 a program
use java to write
.
 a program
Press any key to continue
范例三
using System;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            string test="java is a computer language,c# also is a computer language java is a poupular computer language";
   Console.WriteLine("original text of test are:");
   Console.WriteLine(test);
   string str;
   int count=0;
   while(true){
       Console.WriteLine("请输入你要查询的字符串 例如"+"java");
                str=Console.ReadLine();
    Regex r=new Regex(str);
    MatchCollection mcl=r.Matches(test);
    foreach(Match mymatch in mcl){
       Console.WriteLine("{0}在第{1}个位置出现",mymatch,mymatch.Index);
     count++;
    }
    Console.WriteLine("{0}出现了{1}次",str,count);
    count=0;
    if(str.Equals("break")) break;
   }

  }
 }
}
运行结果
original text of test are:
java is a computer language,c# also is a computer language java is a poupular co
mputer language
请输入你要查询的字符串 例如java
computer
computer在第10个位置出现
computer在第41个位置出现
computer在第78个位置出现
computer出现了3次
请输入你要查询的字符串 例如java
break
break出现了0次
Press any key to continue

日期时间的格式化
范例一
using System;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            DateTime dt=DateTime.Now;
   Console.WriteLine("格式 d:{0:d},格式 D:{1:D}",dt,dt);
   Console.WriteLine("格式 t:{0:t},格式 T:{1:T}",dt,dt);
   Console.WriteLine("格式 f:{0:f},格式 F:{1:T}",dt,dt);
   Console.WriteLine("格式 g:{0:g},格式 G:{1:G}",dt,dt);
   Console.WriteLine("格式 m:{0:m},格式 M:{1:M}",dt,dt);

  }
 }
}

运行结果
格式 d:2007-3-20,格式 D:2007年3月20日
格式 t:19:13,格式 T:19:13:42
格式 f:2007年3月20日 19:13,格式 F:19:13:42
格式 g:2007-3-20 19:13,格式 G:2007-3-20 19:13:42
格式 m:3月20日,格式 M:3月20日
Press any key to continue

toString()方法范例
 范例一
using System;
namespace ConsoleApplication1
{

 class Class1
 {

  static void Main(string[] args)
  {
            int a=20;
   Console.WriteLine("a={0}",a);
   Console.WriteLine("将a转换成string类型后a={0}",a.ToString());

   double b=2.25;
   Console.WriteLine("b={0}",b);
   Console.WriteLine("将b转换成string类型后a={0}",b.ToString());
  }
 }
}

运行结果
a=20
将a转换成string类型后a=20
b=2.25
将b转换成string类型后a=2.25
Press any key to continue