一、概念类
①、什么是字符串,什么是字符,字符串与字符的区别?
字符:是人们使用的记号,抽象意义上的一个符号。‘1’,‘你’,‘a’,‘#’.....
一个字母或一个汉字属于一个字符,而多个字符就是字符串了,字符串是由字符组成的。如“abc”,“你好”
字符使用单引号作为定界符,而字符串是使用双引号作为定界符。
②、字符与字节的区别?
字符>=字节
字节(Byte):字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制,是一个具体存储空间。一个英文字母(不区分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
③、String str=null与String str=“”的区别?
String str=null是不给分配内存空间的,而String str=“”给它分配长度为空字符串的内存空间,String str=null没有string对象,String str=“”有一个字符串对象。
④、谁说字符串不可变?string s="abc",s="123",s不是改变了么?
要区分变量名和变量指向的值的区别,程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,但是字符串本身没有变化,字符串不可变性指的是内存中的字符串不可变,而不是变量不变。
⑤、String与StringBuilder的区别?
String对象是恒定不变的,StringBuilder对象表示的字符串是可变的。
String对象是不可改变的,每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该对象分配新的空间。
例如:String a="a",a+="b",每次在后面追加都会重新申请一个能放字符串的内存空间。
StringBuilder对象是动态对象,允许扩充它所封装的字符串的数量,但是我们可以为它可容纳的最大字符数指定一个值,当修改StringBuilder时,在达到容量之前,它不会为自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。
二、图类
三、代码类
①、字符串值比较(大写比较、小写比较、大小写比较)
转换为小写之后比较:ToLower()
Console.WriteLine("学员A,请输入你喜欢的学科");
string str1 = Console.ReadLine();
str1 = str1.ToLower(); //将字符串转换为小写
Console.WriteLine("学员B,请输入你喜欢的学科");
string str2 = Console.ReadLine();
str2 = str2.ToLower(); //将字符串转换为小写
if (str1 == str2)
{
Console.WriteLine("你们俩喜欢相同的课程{0}", str1);
}
else
{
Console.WriteLine("你们俩喜欢不同的课程{0}", str1);
}
Console.ReadKey();
转换为大写之后比较:ToUpper()
将上段代码的3,6行的ToLower()方法,改为ToUpper()方法即可。
不转换大小写的比较:Equals()
Console.WriteLine("学员A,请输入你喜欢的学科");
string str1 = Console.ReadLine();
Console.WriteLine("学员B,请输入你喜欢的学科");
string str2 = Console.ReadLine();
bool result = str1.Equals(str2, StringComparison.OrdinalIgnoreCase); //判断str1与str2是否具有相同的值,
if (result)
{
Console.WriteLine("你们俩喜欢相同的课程{0}", str1);
}
else
{
Console.WriteLine("你们俩喜欢不同的课程{0}", str1);
}
Console.ReadKey();
②、字符串的切割string.Split()
string str = "哈 哈 ------- 你 好-------";
char[] chs = new char[] { ' ', '-' }; //想要切什么就把要切的内容放入到这个char数组中
//string[] result=str.split(chs); //定义一个result的字符串数组,str.split(chs)代表从str字符串中切除chs数组中内容
//已经把不想要的切掉了,形成了空白项
//如何移除空白项
string[] result = str.split(chs, stringsplitoptions.removeemptyentries); //字符串的split()方法,切除字符串中的内容,移除空白项
for (int i = 0; i < result.length; i++) //遍历reslut字符串数组
{
console.writeline(result[i]); //逐一显示result数组中内容
}
console.readkey();
③、任意类型转换为字符串string .ToString()
int number = 10;
string s = number.ToString();
Console.WriteLine(s); //成功转换为字符串类型
Console.ReadKey();
错误举例:
int[] num = new int[] { 3, 4, 5 }; //声明一个整数数组
string str = num.ToString(); //此处只是转换为类型system.int32[],所以无法转换
Console.WriteLine(str);
Console.ReadKey();
④、字符串替换string.Replace()
string name = "路飞很没毅力";
name = name.Replace('没', '有'); //此处为字符的替换
Console.WriteLine(name);
Console.ReadKey();
//字符串的替换replace方法的重载
string str = "路飞很有毅力";
str = str.Replace("路飞", "乔巴"); //此处为字符串的替换
Console.WriteLine(str);
Console.ReadKey();
⑤、字符串是否包含子串的value,string Contains()
string name = "路飞很懒惰"; //声明一个字符串变量,并向其赋值
bool result = name.Contains("懒惰"); //判断这个字符串是否包含子字符串的value
if (result) //result=true
{
name = name.Replace("懒惰", "勤奋"); //如果字符串中有子字符串的value,那么做一个替换
Console.WriteLine(name); //并在控制台上写入更新的变量内容
}
else
{
Console.WriteLine(name); //在控制台上写入变量name的内容
}
Console.ReadKey();
⑥、从某个位置通过索引截取字符串string.SubString()
string str = "海贼王路飞最后成为海贼王了么?";
//str = str.Substring(3); //截取字符串方法,从哪开始截取字符:从字符串的序号为3,即第四个字符开始截取
str = str.Substring(3, 2); //Substring()方法有两个重载,这个是截取从哪到哪。从第四个字符开始截取两个
Console.WriteLine(str);
Console.ReadKey();
⑦、判断字符串是否以某个字符串开始/结束的string.StratsWith(),string.EndsWith()
string str = "海贼王路飞";
//bool result=str.StartsWith("王"); //判断str字符串中是否是以方法内的参数(字符串)开始的
//bool result = str.EndsWith("路"); //判断str字符串中是否是以方法内的参数(字符串)结束的
bool result =str.Contains("路"); //判断str字符串中是否包含该方法的字符串参数
if(result)
{
Console.WriteLine("含有该字符串");
}
else
{
Console.WriteLine("没有该字符串");
}
Console.ReadKey();
⑧、判断字符串是否为空IsNullOrEmpty()方法
string str = "";
bool result = string.IsNullOrEmpty(str); //判空方法
if (result)
{
Console.WriteLine("为空或者是null值"); //如果时空则在控制台写入内容
}
else
{
Console.WriteLine("字符串有值"); //不为空提示
}
Console.ReadKey();
⑨、移除字符串内容Remove()
string text = "弗朗明哥果然很邪恶";
text = text.Remove(2, 2); //将text字符串中从下标为2的索引开始移除,移除两个,然后再将值赋予给text
Console.WriteLine(text);
Console.ReadKey();
⑩、切前后空格Trim()
string name = " sdjk@djf .cn ";
name=name.Trim(); //去除name字符串前后空格
Console.WriteLine(name);
Console.ReadKey();