5.1 字符串的声明和初始化
- 字符串必须包括在一对双引号之间(" ")
- 单个字符在作为参数时可以使用单引号
5.1.1 字符串的声明
string stringName; //声明格式
string str="我想去海边"; //声明并且赋值
5.1.2 字符串的初始化
- 如上方法,也可以先声明,再单独赋值。
- 利用字符数组。
char[] charArray={'t','i','m','e'};
string str=new string(charArray);
3.提取字符数组中个某几个元素。
string str=new string(charArray,3,1) //提取第四个和第二个字符
5.2 提取字符串信息
5.2.1 获取长度
采用length方法。
int size= str.length;
5.2.2 获取指定位置的字符
将字符串视作数组,用char变量进行迭代。
char chr=str[5];
5.2.3 获取子字符串的索引位置
- IndexOf方法
搜索字符串/字符第一次出现的位置。
~格式:
public int IndexOf(string value,int startIndex,int count); //格式
public int IndexOf(char value,int startIndex,int count); //格式
string str="you are young."; //定义字符串变量
int size=str.IndexOf('e'); //返回e第一次出现的位置
value为要搜素的字符串,startIndex为搜索的起始位置,count为长度。找到时返回位置,没找到返回-1。
- LastIndexOf方法
与IndexOf作用相反,返回最后一次出现的位置,其他用法相同。
5.2.4 判断字符串守卫内容
- StartsWith方法
判断字符串是否以某个字符或者字符串作为开头。
public bool StartWith(string value);
public bool StartWith(string value,bool ignoreCase,CultureInfo culture);//格式
string str="今年一定要赚钱!";
bool result=str.StartWith("今年");
value为要搜索的字符串。
ignoreCase为一个bool值,设定为true时忽略大小写。
culture为CultureInfo对象,确定如何对字符串与value进行区域性信息,为null则使用当前区域性。(@疑问留存)
返回值为true/false。
- EndsWith方法
判断字符串是否以某个字符或者字符串作为结尾。
使用方法同上。
5.3 字符串操作
5.3.1 字符串拼接
用加号“+”连接即可。
string s=s1+s2;
string ss="今天不想"+"上班";
5.3.2 字符串比较
- 使用“==”判断。结果返回true or false。
- Equals方法。
public bool Equals(string value) //格式
public static bool Equals(string A, string B) //格式
if(password.Equals("woshinidie")); //示例
5.3.3 字符串大小写转换
- 格式:
public string ToUpper()
public string ToLower()
- 示例:
string str="livE";
Console.WriteLine(str.ToUpper());
Console.WriteLine(str.ToLower());
5.3.4 格式化字符串
- 格式:
public static string Format(string format, Object arg0)
public static string Format(string format, params Object[] args)
format用于指定要转化的格式,用法如下:
{index[,length][:formatString]}
index指示位置。
length表示包含的最小字符数。该值为负时左对齐,为正时右对齐。
formatString表示要设置的格式。
arg0:要设置的对象。
arg:对象数组。
返回值:格式化以后的字符串。
- 数值类型的数据格式化
格式说明符 | 名称 |
---|---|
C或c | 货币(¥) |
D或d | decimal |
E或e | 科学计数法 |
N或n | number |
P或p | 百分比 |
X或x | 十六进制 |
~示例:
string.Format("π取两位小数是:{0:F2}",Math.PI);
//输出结果为3.14
- 日期时间类型的格式化
格式说明符 | 举例 |
---|---|
d | YYYY-MM-DD |
D | YYYY年MM月DD日 |
f | YYYY年MM月DD日 hh:mm |
F | YYYY年MM月DD日 hh:mm:ss |
g | YYYY-MM-DD hh:mm |
G | YYYY-MM-DD hh:mm:ss |
M或m | MM月DD日 |
t | hh:mm |
T | hh:mm:ss |
Y或y | YYYY年MM月 |
~示例:
DateTime strDate=DateTime.Now; //获取当前时间
string.Format("当前日期的短时间格式表示:{0:d}",strDate);
//输出结果为2017/6/12
5.4.5 截取字符串
- Substring方法
可以截取指定位置和指定长度的子字符串。
使用形式:
public string Substring(int startIndex)
public string Substring(int startIndex,int length)
startIndex:子字符串的起始位置。
length:子字符串的长度。
~示例:
string strFile="Program.cs";
string stringFileName=strFile.Substring(0,strFile.IndexOf('.'));
5.4.6 分割字符串
- Split方法
使用形式:
public string[] Split(string[] separator,int count,StringSplitOptions options)
public string[] Split(char[] separator,int count,StringSplitOptions options)
separator:分割的字符数组或者字符串。
count:返回的字符串最大数量。
options:忽略要返回的数组中的空数组元素,则设置为RemoveEmptyEntries;要包含时则为None。
5.4.7 去除空白内容
- Trim方法
删除从当前字符的开头到结尾的所有空白字符。 - 使用格式
public string Trim()
- 示例:
string str=" abc "
string shortStr=str.Trim();
//shortStr="abc"
也可以删除指定位置的字符。将要删除的字符设置成一个字符数组,作为Trim的参数。
5.4.8 替换字符串
- Replace方法:
public string Replace(char OChar,char NChar)
public string Replace(string OValue,string NValue) //O表示old,N为new
- 示例:
string strOld="one world.";
string strNew=strOld.Replace("ONE","one");
5.5 StringBuilder
5.5.1 Definition
- 位于System.Text的命名空间中,需要引用。
- 构造方法:
public StringBuilder()
public StringBuilder(int capacity)
public StringBuilder(string value)
public StringBuilder(int capacity,int maxCapacity)
public StringBuilder(string value,int capacity)
public StringBuilder(string value,int startIndex,int length,int capacity)
capacity:StringBuilder对象的建议起始大小。
maxCapacity:当前字符串可包含的最大字符数。
startIndex:value字符串开始的位置。
length:子字符串中的字符数。
- 示例:
StringBuilder MyStringBuilder=new StringBuilder(“Hello world!”);
5.5.2 StringBuilder类的使用
方法 | 说明 |
---|---|
Append | 在字符串后加上 |
AppendFormat | 自定义变量的格式并追加到末尾 |
Insert | 插入到指定位置 |
Remove | 移除指定数量的字符 |
Replace | 替换内容 |
- 示例
int Num = 368; //声明一个int类型变量Num并初始化为368
//实例化一个StringBuilder类,并初始化为“明日科技”
StringBuilder SBuilder = new StringBuilder("明日科技");
SBuilder.Append("》C#编程词典"); //使用Append方法将字符串追加到SBuilder的末尾
Console.WriteLine(SBuilder); //输出SBuilder
//使用AppendFormat方法将字符串按照指定的格式追加到SBuilder的末尾
SBuilder.AppendFormat("{0:C0}", Num);
Console.WriteLine(SBuilder); //输出SBuilder
SBuilder.Insert(0, "软件:"); //使用Insert方法将“软件:”追加到SBuilder的开头
Console.WriteLine(SBuilder); //输出SBuilder
//使用Remove方法从SBuilder中删除索引14以后的字符串
SBuilder.Remove(14, SBuilder.Length - 14);
Console.WriteLine(SBuilder); //输出SBuilder
//使用Replace方法将“软件:”替换成“软件工程师必备”
SBuilder.Replace("软件", "软件工程师必备");
Console.WriteLine(SBuilder); //输出SBuilder
Console.ReadLine();
- 与string类的区别
StringBuiler在创建后可以被不停更改,动态占用空间。
而string类在创建后不可再被修改,要添加或是删除,只能是新建一个字符串,重新申请内存空间。