C#基础知识(九)—— 字符串的使用

一、字符串的处理:

string 可以看做是char的只读数组。char c =s[1];

C#中字符串有一个重要特性:不可变性。字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。

如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。

例子:将字符串中的A替换为a。

static void Main(string[] args)
{
    string text = "哈哈,小明好帅";
    char[] chs = text.ToCharArray();//ToCharArray()是将一个字符串内容转换为字符数组
    chs[5] = '很';//改值
    string str = new String(chs);//变成新的字符串
    Console.WriteLine(str);
    Console.ReadKey();
}
二、string类的常用方法:

ToLower():得到字符串的小写形式;

ToUpper():得到字符串的大写形式;

Trim():去掉字符串两端的空白。

s1.Equals(s2, StringComparison.OrdinalIgnoreCase):两个字符串进行比较不区分大小写的比较。
例子:两个学员输入各自最喜欢的课程名称,判断是否一致。如果相等,则输出你们俩喜欢相同的课程。如果不相同,则输出你们俩喜欢不相同的课程。

//第一种方法
Console.WriteLine("输入第一门课程");
string str1 = Console.ReadLine();
Console.WriteLine("输入第二门课程");
str1 = str1.ToUpper();//把字符串转换成大写的
//str1 = str1.ToLower();//把字符串转换成小写的
string str2 = Console.ReadLine();
str2 = str2.ToUpper();
//str2 = str2.ToLower();

if (str1 == str2)
{
    Console.WriteLine("课程一样" + str1);
}
else
{
    Console.WriteLine("课程不同{0}------------{1}", str1, str2);
}
Console.ReadKey();
//第二种方法
Console.WriteLine("输入第一门课程");
string str1 = Console.ReadLine();
Console.WriteLine("输入第二门课程");
string str2 = Console.ReadLine();

bool result = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);//忽略大小写比较
if (result)
{
    Console.WriteLine("课程相同");
}
else
{
    Console.WriteLine("课程不同{0}------------{1}", str1, str2);
}
Console.ReadKey();

面试题:

string str = null 与 string str = “”说明其中的区别。答:string str = null 是不给他分配内存空间,而string str = \“\” 给它分配长度为空字符串的内存空间。 string str = null没有string对象,string str = “”有一个字符串对象。

三、字符串的分割:

string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;
string[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分割符分割为字符串数组( options 取RemoveEmptyEntries的时候移除结果中的空白字符串);

例子:

//让用户输入一个日期格式如:2008-01-02,你输出的日期为2008年1月2日
string date = "2012-----11-------02";
char[] chs = new char[] { '-' };
string[] time = date.Split(chs, StringSplitOptions.RemoveEmptyEntries);//把输入的空格和“-”都去掉

Console.WriteLine("{0}年{1}月{2}日", time[0], time[1], time[2]);
Console.ReadKey();
四、字符串函数:

字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。

取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串。

string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。

bool Contains(string value):判断字符串中是否含有子串value。

bool StartsWith(string value):判断字符串是否以子串value开始。

bool EndsWith (string value):判断字符串是否以子串value结束。

string Insert (int startIndex , string value):在位置startIndex处插入字符串value。

int IndexOf(string value):取子串value第一次出现的位置,返回索引。

Int IndexOf(string value,int startIndex):从字符串的startIndex位置开始找,取子串value第一次出现的位置,然后返回索引。

int LastIndexOf(string value):取子串value最后一次出现的位置,返回索引。

例子:

string name = "小杨很可爱";
//name = name.Replace("小杨", "老苏");//把“小杨”替换成“老苏”
//Console.WriteLine(name);

bool result = name.Contains("小杨");//判断字符串中是否含有子字符串
if (result)
{
    name = name.Replace("小杨", "老苏");
    Console.WriteLine(name);
}
else
{
    Console.WriteLine(name);
}
Console.ReadKey();

string str = "哈哈,你又变帅了";
str = str.Substring(3, 5);//截取第3个到第5个字符串
Console.WriteLine(str);
Console.ReadKey();

string str = "小杨很可爱";
//bool result = str.StartsWith("小杨");//判断是否是以某个字符串开始的
bool result = str.EndsWith("可爱");//判断是否是以某个字符串结尾的
if (result)
{
    Console.WriteLine("有这个字符串");
}
else
{
    Console.WriteLine("没有这个字符串");
}
Console.ReadKey();

string st = "哈哈,我变帅了";
st = st.Insert(7, "!");//在某个索引处插入一个字符串
Console.WriteLine(st);
Console.ReadKey();
string str = "小杨很可爱,帅,哈哈,很帅呢";
//int index = str.IndexOf("哈");//如果这个字符串在这个字符串中,那么就会把这个字符串的索引显示出来。如果,找不到这个字符串,那么返回的结果的-1
//int index = str.IndexOf("可", 1);//找一个字符串,从某个索引开始找,找到了就返回索引,找不到就返回-1
int index = str.LastIndexOf("帅");//找最后一个字符串的索引
Console.WriteLine(index);
Console.ReadKey();


评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值