C# 字符串

C# 字符串

C# 字符串的基础知识

1.字符串的不可变性

(1)字符串的不可变性指的是当你给一个字符串重新赋值之后,旧的值并没有被销毁,而是重新开辟一块空间存储新值。
(2)当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁。
在这里插入图片描述

2.我们可以将字符串看做是char类型的一个只读数组

下面介绍两个常用方法:

char[] chs=str.ToCharArray(); 将字符串转换为char数组
string str=new string(char[] chs);能够将char数组转换为字符串

(1)既然可以将string看作char类型的只读数组,注意是只读。所以我们可以通过下标去访问字符串中的某一个元素。
例子如下:

string s = "abcdghg";
Console.WriteLine(s[0]);//输出a
Console.ReadKey();

(2)假如要改变字符串s的首字母,也就是将上面字符串的首字母a变成b,可以这样做:

            // s[0] = 'b';//不能这样做,因为是只读的
            //正确写法:
            //首先将字符串转换为char类型的数组
            string s = "abcdghg";
            char[] chs=s.ToCharArray();
            chs[0] = 'b';//重新赋值
            //将字符数组转换为我们的字符串
            s= new string(chs);
            Console.WriteLine(s[0]);//输出a
            Console.ReadKey();
2.字符串的各种方法

(1)Length:获得当前字符串中字符的个数

  //1.Length:获得当前字符串中字符的个数
string a = "djofdShDdw";
Console.WriteLine(a.Length);//输出10

(2)ToUpper():将字符转换成大写形式

 Console.WriteLine(a.ToUpper());//DJOFDSHDDW

(3)ToLower():将字符串转换成小写形式

Console.WriteLine(a.ToLower());//djofdshddw

(4)Equals():比较两个字符串字符是否相等

  string b1 = "C#";
  string b2 = "c#";
  bool flag= b1.Equals(b2);//因为一个大写一个小写
  Console.WriteLine(flag);//false

Equals():比较两个字符串字符是否相等,但是下面的枚举类型是忽略大小写。

            string b1 = "C#";
            string b2 = "c#";
            bool flag = b1.Equals(b2, StringComparison.OrdinalIgnoreCase);//True
            Console.WriteLine(flag);

(5)Split()分割字符串,返回字符串类型的数组

//我平常是这样写的
string s = "2008-09-15";
string[] str = s.Split('-');
//规范的写法应该是
char[] chs = { '-' };
string[] str = s.Split(chs, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("现在是{0}年{1}月{2}号", str[0], str[1], str[2]);
            Console.ReadKey();

(6)Contains()判断某个字符串是否包含指定字符串
(7)Replace()将字符串中的某个字符串替换成一个新的字符串

 string str = "国家关键人物老赵";
 if (str.Contains("老赵"))
 {
    str= str.Replace("老赵","***");
 }
  Console.WriteLine(str);
  Console.ReadKey();

(8)Substring 截取字符串,在截取的时候包含要截取的那个字符串

 string str = "今天天气好晴朗,处处好风光";
 //(1)从指定下标截取字符串,包含当前下标
 // str = str.Substring(1);//天天气好晴朗,处处好风光
 //(2)指定下标索引和截取的长度
    str = str.Substring(1, 5);//天天气好晴
    Console.WriteLine(str);
    Console.ReadKey();

(9)StartsWith()判断以…开始

string str = "今天天气好晴朗,处处好风光";
if (str.StartsWith("今天"))
{
      Console.WriteLine("yes");
}
else
{
   Console.WriteLine("NO");
}
 Console.ReadKey();//输出yes

(10)EndsWith() 判断以…结束

string str = "今天天气好晴朗,处处好风光";
if (str.EndsWith("今天"))
{
   Console.WriteLine("yes");
}
  else
{
   Console.WriteLine("NO");
}
Console.ReadKey();//输出no

(11)IndexOf() 判断某个字符串在字符中第一次出现的位置,如果没有返回-1

string str = "今天天气好晴朗,处处好风光";
int index=str.IndexOf('天');//输出1
int index = str.IndexOf('天', 2);//第二个参数指的是开始找的位置(下标索引),从2开始找(包含2),输出2
Console.WriteLine(index);         
Console.ReadKey();

(12)LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有同样返回-1

string str = "今天天气好晴朗,处处好风光";
int index = str.LastIndexOf('天');
Console.WriteLine(index);//输出2
Console.ReadKey();

(13)Trim()去掉字符串中前后的空格;TrimStart() 去掉字符串中前面的空格;TrimEnd()去掉字符串中结尾的空格

string str = "      hahahha    ";
str = str.Trim();//hahahha
去掉前面的空格
str = str.TrimStart();//hahahha
去掉结尾的空客
//str = str.TrimEnd();//      hahahha
Console.Write(str);
Console.ReadKey();

(14)string.IsNullOrEmpty()判断一个字符串是否为空或者为null

string str = "hello";
if (string.IsNullOrEmpty(str))
{
       Console.WriteLine("yes");
}
else
{
  Console.WriteLine("NO");
}
Console.ReadKey();//输出no

(15) string.Join():将数组按照指定的字符串链接,返回一个字符串;join() 方法返回使用指定分隔符拼接一个字符串。在join() 方法中,为每个元素添加了分隔符。

string[] names = { "张胜", "王龙华", "缓缓", "天晓娟" };
string str = string.Join("|", names);
Console.WriteLine(str);
Console.ReadKey();
3.Tips

(1)加号“+”在c#中的两个作用:
当两边都是数字的时候,起到加法作用;
当+号两边有一边是字符串的时候,+号就起到连接的作用。

4.练习3

让用户输入一句话,找出所有e的位置

   string str = "denehekeufejheuere";
            int index = str.IndexOf("e");
            Console.WriteLine("第一次出现e的位置是{0}", index);
            int count = 1;
            while (index != -1)
            {
                index = str.IndexOf("e", index + 1);
               
                if (index == -1)
                {
                    break;
                }
                else
                {
                    count++;
                    Console.WriteLine("第{0}次出现e的位置是{1}", count, index);
                }

            }
            Console.ReadKey();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值