网站首页 > 基础教程 正文
学习笔记之C#基础——字符与字符串
字符Char
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类可以提升性能。
- 上一篇: 前端启动本地服务的四种方法,看完不会你锤我
- 下一篇: C# 高级编程——协变与抗变
猜你喜欢
- 2024-12-02 C++中的struct完全可以被class替代,为什么不删去它呢?
- 2024-12-02 C#笔记~泛型
- 2024-12-02 C# 中 IsNullOrEmpty 和 IsNullOrWhiteSpace 你用对了吗?
- 2024-12-02 C#面试宝典 2022年 60个常见的C#面试问题和答案
- 2024-12-02 C#学习随笔—操作BIN文件(读,写,替代)
- 2024-12-02 C# 入门深度学习:万字长文讲解微积分和梯度下降
- 2024-12-02 344.C# 中的正则表达式:字符匹配、字面字符、特殊字符和转义序列
- 2024-12-02 C#通过二进制读写实现文件的伪加密
- 2024-12-02 C#移除字符串中的不可见Unicode字符
- 2024-12-02 使用 C# 解析月份简写的时间日期格式
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)