字符串String必须包裹在一对【“”】中;例如:“23424” “你好”
在C#中由双引号【“”】包裹的都是字符串,不能作为其他数据类型来使用,如"1+2"的输出结果永远不会是3
声明:
String str = [null];
字符串必须进行初始化后才能够使用。
使用‘+’运算符可完成对多个字符串连接的功能。运算符【+】可以连接多个字符串,并产生一个String对象。
String s1 = ”Hello“;
String s2 = " World";
String s = s1 + s2;
C#中一句相连的字符串不能分开在两行中写,如果需要太长需要分开,可以如下:
Console.WriteLine("I like " +
"C#");
对字符串进行比较,可以使用比较运算符【==】实现,也可以通过C#中常见的字符串的比较方法Compare()、CompareTo()和Equals()等方法,这些方法都归属于String类下;
比较两个字符串是否相等,有多个重载方法,最常用的两种方法如下:
int Compare(string strA, string strB)
int Compare(string strA, string strB, bool ignorCase)
strA strB 需要比较的字符串,ignorCase是一个布尔类型的参数,如果为true就忽略大小写的差别。
Compare()方法是一个静态方法,所以在使用时,可以直接引用。
string str1 = "华为";
string str2 = "华为mate系列";
//引用
Console.WriteLine(String.Compare(str1,str2)); //输出-1
比较字符串不是比较长度大小,而是比较字符串在英文字典中的位置。按照A~Z的顺序,判断两个字符串的大小。
CompareTo()方法与Compare()方法类似,不同的是CompareTo()方法以实例对象本身与指定的字符串做比较,其语法如下:
public int CompareTo(String strB)
例如strA与strB进行比较:
strA.CompareTo(strB)
如果两个字符串相等,返回0;如果strA大于strB,返回1;否则返回-1;
Equals()方法主要用来比较两个字符串是否相同,如果相同返回true,否则返回false。
常用语法:
public bool Equals(string value);
publi static bool Equals(string a, string b);
value:与实例比较的字符串
a和b:是要进行比较的两个字符串
例:
string strA = “C#";
string strB = "C#宝典";
Console.WriteLine(strA.Equals(strB));
Console.WriteLine(String.Equals(strA,strB));
该方法执行顺序(区分大小写和区域性)比较。
C#中,String类提供了一个静态的Format()方法,用于将字符串数据格式化成指定的格式,其语法如下:
public static string Format(string format, object obj);
format: 用来指定字符串所要的格式化的形式;
obj:要被格式化的对象
格式化字符串主要有两种情况,分别是数值类型数据的格式化和日期时间类型数据的格式化:
format参数由零个或多个文本序列与零个或多个索引占位符混合构成,其中索引占位符称为格式项,它们与此方法的参数列表中的对象相对应。
格式设置过程将每个格式项替换为相应对象值的文本表示形式。
格式项的语法是:
{索引[,对齐方式][:格式字符串]}
它指定了一个强制索引、格式化文本的可选长度和对齐方式,以及格式说明符字符的可选字符串,其中格式说明符字符用于控制如何设置相应对象的值的格式。
数值类型有多种显示方式,比如货币形式、百分比形式等,C#支持的标准数值格式规范如表5.3所示:
格式说明符 | 名称 | 说明 | 示例 |
---|---|---|---|
C或c | 货币 | 结果:货币值 受以下类型支持:所有数值类型 精度说明符:小数位数 |
¥123或-¥123.456 |
D或d | Decimal | 结果:整型数字,负号可选 受以下类型支持:仅整型 精度说明符:最小位数 |
1234或-001234 |
E或e | 指数(科学型) | 结果:指数计数法 受以下类型支持:所有数值类型 精度说明符:小数位数 |
1.052033E+003或-1.054e+003 |
F或f | 定点 | 结果:整数和小数,负号可选 受以下类型支持:所有数值类型 精度说明符:小数位数 |
1234.57或-156.05600 |
N或n | Number | 结果:整数和小数、组分隔符和小数分隔符,负号可选 受以下类型支持:所有数值类型 精度说明符:所需的小数位数 |
1234.57或-1234.560 |
P或p | 百分比 | 结果:乘以100并显示百分比符号的数字 受以下类型支持:所有数值类型 精度说明符:所需的小数位数 |
100.00%或100% |
X或x | 十六进制 | 结果:十六进制字符串 受以下类型支持:仅整型 精度说明符:结果字符串中的位数 |
FF或00ff |
例:
//输出金额
Console.WriteLine(string.Format("123+123的结果是(以货币形式显示):{0:C}",123+123));
//输出科学计数法
Console.WriteLine(string.Format("12000.1用科学计数法表示:{0:E}", 12000.1));
//输出以分隔符显示的数字
Console.WriteLine(string.Format("1280000以分隔符数字显示的结果是:{0:N0}", 1280000));
Console.WriteLine(string.Format("1280000以分隔符数字显示的结果是:{0:N}", 1280000));
//输出小数点后两位
Console.WriteLine(string.Format("PI取小数点后两位:{0:F2}",Math.PI));
//输出十六进制
Console.WriteLine(string.Format("33的十六进制结果是:{0:X4}",33));
//输出百分号数字
Console.WriteLine(string.Format("天才是由{0:P0}的灵感,加上{1:P0}的汗水组成。",0.01,0.99));
Console.ReadLine();
格式规范 | 说明 |
---|---|
d | 简短日期格式(YYYY-MM-dd) |
D | 完整日期格式(YYYY年MM月dd日 |
t | 简短时间格式(hh:mm) |
T | 完整时间格式(hh:mm:ss) |
f | 简短的日期/时间格式(YYYY-MM-dd hh:mm) |
F | 完整的日期/时间格式(YYYY年-MM月-dd日 hh:mm:ss) |
g | 简短的可排序的日期/时间格式(YYYY-MM-dd hh:mm) |
G | 完整的可排序的日期/时间格式(YYYY-MM-dd hh:mm:ss) |
M或m | 月/日格式(MM月dd日) |
Y或y | 年/月格式(YYYY年MM月) |
例:
DateTime dt = DateTime.Now; //获取当前系统时间
string strB = string.Format("{0:D}", dt); //格式化成完整日期格式
Console.WriteLine(strB); //输出日期
Console.ReadLine();
String类提供了一个Substring()方法,该方法可以截取字符串中指定位置和指定长度的子字符串,其语法格式如下:
public string Substring(int startIndex, int length)
startIndex:子字符串起始位置的索引
length:子字符串的字符数
例:
string strA = "今天你学习了吗?";
string strB = null;
strB = strA.Substring(2, 6);
Console.WriteLine(strB);
Console.ReadLine();
String类提供了一个Split()方法,用于分割字符串,此方法的返回值是包含所有分割子字符串的数组对象,可以通过数组取得所有分割的子字符串,其语法格式如下:
public string[] Split(params char[] separator);
separator:是一个数组,包含分隔符
例:
string strA = "AI时代已然到来,再不努力就要被淘汰!";
char[] separator = { ',' }; //声明分割字符的数组
String[] splitStrings = new string[100];
splitStrings = strA.Split(separator);
for (int i = 0; i < splitStrings.Length; i++)
{
Console.WriteLine(splitStrings[i]);
}
Console.ReadLine();
String类提供了一个Insert()方法,用于向字符串的任意位置插入新元素,其语法如下:
public string Insert(int startIndex, string value)
startIndex:指定所要插入的位置,索引从0开始
value:指定所要插入的字符串
string str1 = "梦想还是要有的,万一实现了呢!";
string str2;
str2 = str1.Insert(0, "马云说:");
string str3;
str3 = str2.Insert(str2.Length - 1, "你信吗!");
Console.WriteLine(str3);
Console.ReadLine();
String类提供了PadLeft()/PadRight()方法用于填充字符串,PadLeft()方法在字符串的左侧进行字符填充,而PadRight()方法在字符串的右侧进行字符填充。PadLeft()方法的语法格式如下:
public string PadLeft(int totalWidth, char paddingChar);
PadRight()方法的语法格式如下:
public string PadRight(int totalWidth, char paddingChar)
totalWidth:指定填充后的字符串长度
paddingChar:指定所要填充的字符,如果省略,则填充空格符号
String str1 = "*^_^*";
string str2 = str1.PadLeft(str1.Length+1, '(');
str2 = str2.PadRight(str2.Length+1, ')');
Console.WriteLine(str2);
String类提供了一个Remove()方法,用于从一个字符串的指定位置开始,删除指定数量的字符,其语法格式如下:
//删除起始位置后的所有内容(包含起始位)
public string Remove(int startIndex);
public string Remove(int startIndex, int count);
startIndex:用于指定开始删除的位置,索引从0开始(不可为负数)
count:指定删除的字符数量(不能为0或是负数)
例:
string strPart = "今天你学习了吗?";
string strAll = "学到老,活到老,哈哈哈哈";
Console.WriteLine($"删除指定个数的字符串:{strPart.Remove(0, 2)}");
Console.WriteLine($"删除起始位置后所有的字符串:{strAll.Remove(7)}");
String类提供了Copy()方法和CopyTo()方法,用于将字符串或子字符串复制到另一个字符串或Char类型的数组中。
创建一个与指定字符串具有相同值的字符串的 新实例,其语法格式如下:
public static string Copy(string str)
str:代表要复制的字符串。
返回值:与str相同的字符串
例:
string oriStr = "今天你学习了吗?";
string copyStr = string.Copy(oriStr);
Console.WriteLine($"复制后的字符串:{copyStr}");
copyStr += "学到老,活到老";
Console.WriteLine($"原字符串:{oriStr}");
Console.WriteLine($"复制并修改后的字符串:{copyStr}");
Console.ReadLine();
该方法功能yuCopy()方法基本相同,但是CopyTo()方法可以将字符串的某一部分复制到另一个Char类型的字符数组中,其语法格式如下:
public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count);
方法参数如下:
参数 | 说明 |
---|---|
sourceIndex | 需要复制的字符的起始位置 |
destination | 目标字符数组 |
destinationIndex | 指定目标数组中的开始存放位置 |
count | 指定要复制的字符个数 |
例:
string oriStr = "今天你学习了吗?";
char[] copyStr = new char[100];
oriStr.CopyTo(0, copyStr, 0,8);
Console.WriteLine(copyStr);
String 类提供了一个 Replace()方法,用于将字符串中的某个字符或字符串替换成其他的字符或字符串,其语法格式如下:
public string Replace(char OChar, char NChar)
public string Replace(string OValue, string NValue)
方法参数如下:
参数 | 说明 |
---|---|
OChar | 代替换的字符 |
NChar | 替换后的新字符 |
OValue | 代替换的字符串 |
NValue | 替换后的新字符串 |
例:
string oriStr = "今天你学习了!";
string newStr = oriStr.Replace('你', '我');
Console.WriteLine($"原字符串:{oriStr}");
Console.WriteLine($"替换字符后的字符串:{newStr}");
Console.WriteLine();
string oriStr2 = "今天你学习了吗?";
string newStr2 = oriStr2.Replace("你学习了吗?", "我学习了!并且会一直在持续着!");
Console.WriteLine($"原字符串:{oriStr2}");
Console.WriteLine($"替换字符串后的字符串:{newStr2}");