专业编程基础技术教程

网站首页 > 基础教程 正文

学习笔记之C#基础——字符与字符串

ccvgpt 2024-12-02 15:42:39 基础教程 1 ℃

学习笔记之C#基础——字符与字符串

字符Char

学习笔记之C#基础——字符与字符串

Char类用来处理单个字符,在声明字符变量的时候,要使用单引号,如'a'表示一个字符。下面声明一个字符的例子:

Char ch0='a'; 
Char ch1='b';

为了对字符进行操作,Char类还提供了一些方法,主要用来比较和转换字符。

转义字符

转义字符是一些特殊的字符。以反斜杠“\”开始,后面跟一个字符。

字符串

字符串由多个字符组合而成,使用双引号包含起来。

string str0=""; 
string str1="hello,world!";
  • 连接字符串用+号。
static void strmoth()
{
    string str0="say:";
    string str1="hello,world!";
    string str3=str0+str1; //得到结果str3为say:hello,world!
    string str4=str1+"我们一起学C#"; //得到结果str4为hello,world!我们一起学C#
}
  • 比较字符串

可以使用==比较运算符进行。也可以使用以下方法比较:Compare()方法,CompareTo()方法,Equals()方法。

static void strmoth()
{
    string str0="hello,world!";
    string str1="hello,world!";
    Console.Writeline(str0==str1);
    int aa=Compare(str0,str1); //Compare()方法,返回值为int类型
    int bb=Compare(str0,str1,bool ignorCase); //Compare()方法,忽略大小写,返回值为int类型
    str0.CompareTo(str1);//CompareTo()方法,返回值为int类型
    str0.Equals(str1);//Equals()方法,返回bool类型
    bool cc=Equals(str0,str1);//Equals()方法,返回bool类型   
}
  • 格式化字符串

C#提供一个字符串的格式化静态方法,Format()方法,用于将字符串数据格式化成指定的格式。

语法格式:public static string Format(string format,object obj)

format参数由零或多个文本序列与零或多个索引占位符混合组成,其中索引占位符称为格式项,它们与此方法的参数列表中的对象相对应。格式设置过程将每个格式项替换为相应对象值的文本表示形式。格式项的语法是{索引[,对齐方式][:格式字符串]},它指定了一个强制索引、格式化文本的可选长度和对齐方式,以及格式说明符字符的可选字符串,其中格式说明符字符用于控制如何设置相应对象的值的格式。

static void strmoth()
{
     string str0="hello";
     string str1="world!";
     string str3=string Format("{0},{1}",str0,str1);
 }

字符串格式化经常用来对日期时间的格式化。以下是日期格式化的常见格式。

格式化日期格式实例:

     class Program
    {
        static void Main(string[] args) 
        {
            DateTime dateTime = DateTime.Now;
            string dt1=string.Format("{0:d}",dateTime);
            Console.WriteLine("d格式:"+dt1);
            string dt2 = string.Format("{0:D}", dateTime);
            Console.WriteLine("d格式:"+dt2);
            Console.ReadLine();
        }
    }

输出结果:

  • 截取字符串

String类提供了一个Substring()方法,该方法可以截取字符串中指定位置和指定长度的子字符串,其语法格式如下:

public string Substring(int index,int length);

int index指定起始索引;

int length指定截取长度。

  static void Main(string[] args) 
        {
            string str = "我们一起学习C#";
            string str1 = str.Substring(2,6);
            Console.WriteLine(str1);
            Console.ReadLine();
        }

输出结果:

  • 分割字符串

String类提供了一个Split()方法,用于分割字符串,此方法的返回值是包含所有分割子字符串的数组对象,可以通过数组取得所有分割的子字符串。

   static void Main(string[] args) 
        {
            string str = "小伙儿,我们一起学习C#,加油!";
            string[] str1 = str.Split(',');
            Console.WriteLine(str1[0]);
            Console.WriteLine(str1[1]);
            Console.WriteLine(str1[2]);
            Console.ReadLine();
        }

输出结果:

  • 插入字符串

String类提供了一个Insert()方法,用于向字符串的任意位置插入新元素。

例:

     static void Main(string[] args) 
    {
        string str = "美女,我们一起学习C#,加油!";
        string str1 = str.Insert(3,"帅哥,");
        Console.WriteLine("插入前:" + str);
        Console.WriteLine("插入后:" + str1);
        Console.ReadLine();
    }

输出结果:

  • 填充字符

String类提供了PadLeft()/PadRight()方法用于填充字符串,PadLeft()方法在字符串的左侧进行字符填充,而PadRight()方法在字符串的右侧进行字符填充。

     static void Main(string[] args) 
    {
        string str = "美女,我们一起学习C#,加油!";
        string str1 = str.PadLeft(21,'*');
        string str2 = str1.PadRight(27, '*');
        Console.WriteLine("填充前:" + str);
        Console.WriteLine("左填充后:" + str1);
        Console.WriteLine("再右填充后:" + str2);
        Console.ReadLine();
    }

输出结果:

  • 删除字符串

String类提供了一个Remove()方法,用于从一个字符串的指定位置开始,删除指定数量的字符。

     static void Main(string[] args) 
    {
        string str = "美女,我们一起学习C#,加油!";
        string str1 = str.Remove(0,3);
        string str2 = str1.Remove(8);
        Console.WriteLine("删除前:" + str);
        Console.WriteLine("删除第0开始的3个字符后:" + str1);
        Console.WriteLine("再次删除从第8开始的字符后:" + str2);
        Console.ReadLine();
    }

输出结果:

  • 复制字符串

String类提供了Copy()和CopyTo()方法,用于将字符串或子字符串复制到另一个字符串或Char类型的数组中。

     static void Main(string[] args) 
    {
        string str = "美女,我们一起学习C#,加油!";
        string str1 = string.Copy(str);//完全复制
        char[] str2 = new char[10];
        str.CopyTo(3, str2,0,8);//部分复制
        Console.WriteLine("原始字符串str:" + str);
        Console.WriteLine("复制的字符串str1:" + str1);
        Console.WriteLine("复制的字符数组str2:"); 
        Console.WriteLine(str2);
        Console.ReadLine();
    }

输出结果:

  • 替换字符或字符串

String类提供了一个Replace()方法,用于将字符串中的某个字符或字符串替换成其他的字符或字符串。

    static void Main(string[] args) 
    {
        string str = "美女,我们一起学习C#,加油!";
        string str1 =str.Replace('我','咱');//替换字符
        string str2 = str.Replace("美女", "帅哥");//替换字符串
        
        Console.WriteLine("原始字符串str:" + str);
        Console.WriteLine("替换字符后str1:" + str1);
        Console.WriteLine("替换字符串后str2:" + str2); 
        
        Console.ReadLine();
    }

输出结果:

可变字符串

对于创建成功的字符串对象,它的长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。而C#中提供了一个可变的字符序列StringBuilder类,大大提高了频繁增加字符串的效率。

StringBuilder类的定义

StringBuilder str=new StringBuilder("美女,我们一起学习C#,加油!");

StringBuilder类的使用

有以下方法可以使用:

StringBuilder类与String类的区别

String对象是不可改变的,每次使用String类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用StringBuilder类。例如,当在一个循环中将许多字符串连接在一起时,使用tringBuilder类可以提升性能。

Tags:

最近发表
标签列表