学习C#字符串中的String类
1、格式化字符串format的用法
using System;
using System.Collections;
using System.Collections.Generic;
namespace C_sharp
{
class Program
{
static void Main(string[] args)
{
int dt = 999999;
string time = string.Format("{0:000,000,000.00}", dt);
Console.WriteLine(time);
Console.ReadLine();
}
}
}
2、截取字符串Substring的用法
using System;
using System.Collections;
using System.Collections.Generic;
namespace C_sharp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("阅读下面这首诗:");
string str = "花开百日妍,
一朝逢露落。
神已飘伶仃,
更兼尘归堕。";
string str1 = str.Substring(0, 1) + str.Substring(11, 1) + str.Substring(14, 1) + str.Substring(25, 1);
Console.WriteLine(str);
Console.WriteLine("诗的大概意思是:{0}", str1);
Console.ReadLine();
}
}
}
3、分割字符串Split和合并字符串Join的用法
using System;
using System.Collections;
using System.Collections.Generic;
namespace C_sharp
{
class Program
{
static void Main(string[] args)
{
string str = "sep,ar.ato?rst!rig";
string str2;
Console.WriteLine("分割前str为:
{0}", str);
char[] separator = { ',','.','?','!' };
Console.WriteLine("分割字符为:");
for(int i = 0; i < separator.Length; i = i + 1)
{
Console.Write(separator[i]);
}
Console.WriteLine();
string[] str1 = str.Split(separator);
str = "";
str2 = string.Join("-", str1);
Console.WriteLine("分割后str为:");
for (int i = 0; i < str1.Length; i = i + 1)
{
Console.WriteLine("{0}", str1[i]);
}
Console.WriteLine("通过Join函数合并后:
{0}", str2);
Console.ReadLine();
}
}
}
4、删除字符串Remove的用法
using System;
using System.Collections;
using System.Collections.Generic;
namespace C_sharp
{
class Program
{
static void Main(string[] args)
{
string str = "河畔的风放肆拼命地吹";
Console.WriteLine("语句:{0}", str);
string str1 = str.Remove(2);
Console.WriteLine("事件地点为:{0}", str1);
string str2 = str.Substring(3);
string str_2 = str2.Remove(1, 5);
Console.WriteLine("事件内容:{0}", str_2);
string str3 = str.Substring(4);
string str_3 = str3.Remove(4);
Console.WriteLine("风的情感:{0}", str_3);
string str5 = "String&Builder";
string str_5 = str5.Remove(6, 1);
Console.WriteLine(str_5);
Console.ReadLine();
}
}
}
5、替换字符串Replace的用法
using System;
using System.Collections;
using System.Collections.Generic;
namespace C_sharp
{
class Program
{
static void Main(string[] args)
{
string str = "(⊙o⊙)";
Console.WriteLine("{0} 你看
要变脸喽,呼呼!", str);
string str1 = str.Replace('o', '_');
Console.WriteLine("一张
{0} 好的", str1);
string str2=str1.Replace("(⊙", "~(>");
Console.WriteLine("再来一张
{0} 哭了", str2.Replace("⊙)", "<)~"));
string str3 = str.Replace("o⊙)", "~⊙b汗");
Console.WriteLine("再来一张
{0} 糟糕,变错了,尴尬!", str3);
string str4 = "&string&";
Console.WriteLine(str4);
string str5 = str4.Replace("&","");
Console.WriteLine(str5);
Console.ReadLine();
}
}
}
学习StringBuilder类型
字符串本身是不可变的,这些操作的本质其实是创建了一个新的字符串来代替,当需要多次对字符串进行修改时,应该把String类转换为StringBuilder类
以下是关于StringBuilder类型的一些操作
这些方法的实例运用
StringBuilder类存在于System.Text命名空间中,如果要创建StringBuilder对象,首先必须引用此命名空间。
using System;
using System.Collections;
using System.Collections.Generic;
namespace C_sharp
{
class Program
{
static void Main(string[] args)
{
StringBuilder sb=new StringBuilder("小明",100);//实例化一个StringBuilder类
sb.Append("今年二十三岁,");//使用Append方法将字符串追加到sb
Console.WriteLine(sb);//输出sb
DateTime dt=new DateTime(2009,9,1);//实例化DataTime
sb.AppendFormat("{0:D}",dt);//使用AppendFormat按照指定的格式追加到sb
sb.Append("毕业于上海交通大学。");//使用Append方法将字符串追加到sb
Console.WriteLine(sb);//输出sb
sb.Insert(3,"男");//使用Insert方法将“男”追加到sb
Console.WriteLine(sb);//输出sb
sb.Remove(3,3);//使用Remove方法从sb中删除字符串“男”
Console.WriteLine(sb);//输出sb
sb.Replace("上海","西安");//使用Replace方法将“上海”替换成“西安”
Console.WriteLine(sb);//输出sb
Console.ReadLine();
}
}
}
总结
StringBuilder类与String类的区别
String类和StringBuilder类都用来处理字符串,它们之间有着较多相似的常规用法,并且这二者之间可以相互转换,这导致许多人在程序设计中不严格区分它们,甚至认为二者基本相同,是可以通用的。但实际情况不然,而且二者之间的内在差别非常大。下面将对这两个类进行详细区分。
◆ String类型表示Unicode字符的字符串,该类型的字符串对象是只读的。也就是说,一旦创建了某个字符串对象,那么该字符串对象就不能够修改。表面看来能够修改字符串的所有方法实际上并没有修改原有的字符串,而是生成另外一个全新的字符串对象。
◆ StringBuilder类型表示值为可变字符序列的类似字符串的对象。之所以说值是可变的,是因为可以对StringBuilder对象进行追加、移除、替换或插入字符来对其进行修改,这点与String类型恰恰相反。大多数修改StringBuilder实例的方法都返回对同一实例的引用。由于返回的是对实例的引用,因此可以调用该引用的方法或属性。如果想要编写将连续操作依次连接起来的单个语句,这将很方便。
说明:当程序中需要对某个字符串进行大量操作时,应该考虑用StringBuilder类处理该字符串,其设计目的就是针对大量String操作的一种改进办法,避免产生太多的临时对象。当程序中只是对某个字符串进行一次或几次操作时,采用String类即可。
技巧:在字符串连接次数较少的情况下,建议使用“+”号,若有大量连接操作使用StringBuilder类。