Net Core教程

【C#学习记录】三、字符串相关内容

本文主要是介绍【C#学习记录】三、字符串相关内容,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

字符串

字符串的特性

  1. 字符串的不可变性

当给一个字符串重新赋值之后,老值并没有被销毁,而是指向了一个新开辟的空间,该空间存储新值。

当程序结束后,GC扫描整个内存,如果发现有的空间没有任何指向,则该空间被回收。

string s1 = "张三";
string s2 = "张三";
Console.ReadKey();

观察即时窗口:

image-20220221214935327

上面是栈中的地址,下面是堆中的地址,可以发现,栈中地址不同,堆中地址相同

  1. 我们可以将字符串看作是char类型的一个只读数组,所以通过索引不能改变字符串的值

    如果想改变字符串,首先需要利用ToCharString()方法将字符串转换为char类型的数组,改变完再转回去

    string s = "abcdefg";
    char[] chs = s.ToCharString();
    chs[0] = 'b';
    s = new string(chs);
    

    StringBuilder类

为了简化字符串的使用,引入StringBuilder类

计时器

Stowatch类

Stopwatch sw = new Stopwatch();
sw.Start();

sw.Stop();
Console.WriteLine(sw.Elapsed);
StringBuilder sb new StringBuilder();
sb.Append();
string str = sb.ToString();

.Append()

string字符串常用方法

  1. 字符串长度str.Length()

str1.Length()

  1. 字符串大小写转换str.ToUpper() str.ToLower()

str1 = str1.ToUpper()

str2 = str2.ToLower()

  1. 字符串比较str1.Equals(str2)

==

str1.Equals(str2)(区分了大小写)

str1.Equals(str2, StringComparision.OrdinalIgnoreCase)(忽略了大小写差异)

  1. 分割字符串str.Split(chs,StringSplitOption.RemoveEmptyEntries)

    string str = "a b   dfd _  +   =   ,,,   fdf ";
    //分割字符串Split
    char[] chs = {' ','_','+','=',','};
    string[] str = s.Split(chs, StringSplitOption.RemoveEmptyEntries);
    

    image-20220221222354291

返回字符串类型的数组

  1. 替换字符串str.Replace(substr1,substr2)与字符串查询str.Contains(substr)

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

    str.Contains()方法和str.Replace()方法

  2. 截取字符串str.Substring(StartIndex)

string str = "今天天气好晴朗,处处好风光";
str = str.Substring(1);//从索引1截取到最后
Console.WriteLine(str);

从索引处截取到最后,包含这个索引。

string str = "今天天气好晴朗,处处好风光";
str = str.Substring(1,2);//从索引1截取到索引2
Console.WriteLine(str);

包括索引1

  1. 判断字符串从某个字符串起始str.StartWith("substr"),结束str.EndWith("substr")
string str = "今天天气好晴朗,处处好风光";
if (str.StartWith("今天"))//str.EndWith("风光");
{
    Console.WriteLine("是的");
}
else
{
    Console.WriteLine("不是的");
}
  1. 判断字符串中某一个字符的索引str.IndexOf('char',FindIndex)
string str = "今天天气好晴朗,处处好风光"
int index = str.IndexOf('天',1);
int index2 = str.LastIndexOf('天');
Console.WriteLine(index);

从索引1开始找,包括索引1

  1. 从字符串中一处所有的空格str.Trim()
string str ="             hahaha             "
str =  str.Trim();//去掉所有的空格
str1 = str.TrimStart();//去掉开始的空格
str2 = str.TrimEnd();//去掉结尾的空格
Console.WriteLine(str);
  1. 判断字符串是否为空string.IsNullOrEmpty(str)
string str = "";//null
bool bl = string.IsNullOrEmpty(str);
  1. 使用指定分隔符凭借字符串数组string.Join(分隔符,str);
string[] str = {"张三","李四","王五"};
string strNew = string.Join("|",str);
Console.WriteLine(strNew);

image-20220222112233541

总结

关键词 作用 实例方法/静态方法 语法举例
Length 获得当前字符串中字符的个数 实例方法 str.Length()
ToUpper 将字符转换成大写形式 实例方法 str.ToUpper()
ToLower 将字符串转换成小写形式 实例方法 str.ToLower()
Equals 比较两个字符串 实例方法 str1.Equals(str2,stringComparison.OrdinalIgnoreCase)
Split 分割字符串,返回字符串类型的数组 实例方法 str.Split(chs)
SubString 截取字符串,在截取的时候包含要截取的那个位置 实例方法 str.SubString(Index)
IndexOf 判断某个字符串在字符串中第一次出现的位置,如果没有返回-1 实例方法 str.IndexOf(subString,FindIndex)
LastIndexOf 判断某个字符串在字符中最后一次出现的位置,如果没有返回-1 实例方法 str.LastIndexOf(subString)
StartsWith 判断以...开始 实例方法 str.StartWith(subString)
EndsWith 判断以...结束 实例方法 str.StartWith(subString)
Replace 将字符串中某个字符串替换成指定的字符串 实例方法 str.Replace(subString)
Contains 判断某个字符串是否包含指定的字符串 实例方法 str.Contains(subString)
Trim 去掉字符串中前后的空格 实例方法 str.Trim()
TrimEnd 去掉字符串后面的空格 实例方法 str.TrimEnd()
TrimStart 去掉字符串前面的空格 实例方法 str.TrimStart()
IsNullOrEmpty 判断字符串是否为空或者null 静态方法 string.IsNullOrEmpty(str)
Join 以特定分隔符链接字符串数组 静态方法 sring.Join(subString,str)

字符串的处理 练习

image-20220223161636158

有时间自己写一遍。

这篇关于【C#学习记录】三、字符串相关内容的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!