一.不可变字符串
含义:
string,引用类型,string类型表示零或更多 Unicode 字符组成的序列,
string 是 .NET Framework 中 String 的别名。
代码示例:
1.初始化字符串的方式
//方式1 字面量创建字符串
string str1 = "abc";
string str2 = @"abc";
//方式2
char[] charArray = new char[5] { 'a','b','c','d','f'};
string str3 = new string(charArray);
//方式3
string str4 = string.Format("123");
2.字符串本质也是单字符的集合
string str5 = "abcdefg";
Console.WriteLine(str5.Length);
char charNumber1 = str5[0];
Console.WriteLine(charNumber1);
//str5[0] = 'w'; 无法直接修改某个单字符
for (int i = 0; i < str5.Length; i++)
{
Console.WriteLine(str5[i]);
}
foreach (var item in str5)
{
Console.WriteLine(item);
}
二.Array 类的方法
1.Length 获取字符串的长度,即字符串中字符的个数.
string str1 = "abcasGdaSsAdasdfds";
//只读属性 不能赋值
// Console.WriteLine(str1.Length);
2.IndexOf 返回整数,得到指定的字符串在原字符串中第一次出现的位置.
//存在返回对应的索引值 反之返回-1
int charIndex = str1.IndexOf('a');
int charIndex1= str1.IndexOf('a',1);
Console.WriteLine(charIndex1);
int charIndex2 = str1.IndexOf('a',1,5);
// Console.WriteLine(charIndex1);
3.LastlndexOf 返回整数,得到指定的字符串在原字符串中最后一次出现的位置 从左数.
int charIndex3 = str1.LastIndexOf('a');
// Console.WriteLine(charIndex3);
int charIndex4 =str1.LastIndexOf('a',4);
Console.WriteLine(charIndex4);
int charIndex5 = str1.LastIndexOf('a',5,3);
Console.WriteLine(charIndex5);
4.StartsWith 返回布尔型的值,判断某个字符串是否以指定的字符串开头.
bool isTrue = str1.StartsWith("a");
Console.WriteLine(isTrue);
bool isTrue1 = str1.StartsWith("abb");
Console.WriteLine(isTrue1);
5.EndsWith 返回布尔型的值,判断某个字符串是否以指定的字符串结尾.
bool isTrue3 = str1.EndsWith("bcasdasdasdfds");
Console.WriteLine(isTrue3);
6. ToLower 返回一个新的字符串,将字符串中的大写字母转换成小写字母.
string lowerStr = str1.ToLower();
Console.WriteLine(lowerStr);
Console.WriteLine(str1);
7.ToUpper 返回一个新的字符串,将字符串中的小写字母转换成大写字母.
string upperStr = str1.ToUpper();
Console.WriteLine(upperStr);
Console.WriteLine(str1);
8. Trim返回一个新的字符串,不带任何参数时表示将原字符串中前后的空格删除.
string str2 = " a bc ";
Console.WriteLine(str2.Length);
string trimStr = str2.Trim();
Console.WriteLine(trimStr.Length);
Console.WriteLine(str2);
9.Remove 返回一个新的字符串,将字符串中指定位置的字符串移除.
string str3 = "abcdefgh";
string reStr = str3.Remove(0,3);
Console.WriteLine(reStr);
10. TrimStart 返回一个新的字符串,将字符串中左侧的空格删除.
string str10 = " d f g h j k ";
string trStr = str10.TrimStart();
Console.WriteLine(trStr);
11.TrimEnd 返回一个新的字符串,将字符串中右侧的空格删除。
string trStr2 = str10.TrimEnd();
Console.WriteLine(trStr2);
12.PadLeft 返回一个新的字符串,从字符串的左侧填充空格达到指定的字符串长度.
string s = "6";
string ss = s.PadLeft(2);
Console.WriteLine(ss);
Console.WriteLine(s.PadLeft(2, '0'));
Console.WriteLine(s.PadLeft(4, '0'));
Console.WriteLine(s.PadLeft(4, 'c'));
13.PadRight 返回一个新的字符串,从字符串的右侧填充空格达到指定的字符串长度.
string sss = s.PadRight(2);
Console.WriteLine(sss);
Console.WriteLine(s.PadRight(2, '0'));
Console.WriteLine(s.PadRight(4, '0'));
Console.WriteLine(s.PadRight(4, 'c'));
14.Substring 返回一个新的字符串,用于截取指定的字符串.
string subStr= str3.Substring(0,3);
Console.WriteLine(subStr);
15.Insert 返回一个新的字符串,将一个字符串插入到另一个字符串中指定索引的位置.
string insertStr = str3.Insert(1,"kkk");
Console.WriteLine(insertStr);
16.Concat方法用于连接string的一个或多个实例,或string的一个或多个实例的object表示形式
string str4 = "abc";
string str5 = "fff";
string concatStr = string.Concat(str4,str5);
Console.WriteLine(concatStr);
17.Join字符串数组元素以某个字符串符号分割 然后组成新的字符串
string joinStr= string.Join(",",str6,str7);
Console.WriteLine(joinStr);
string[] strArray = { "a", "b", "c", "d" };
string joinStr1 =string.Join("TT",strArray);
Console.WriteLine(joinStr1);
18.Contains 判断字符串是否包含某些子字符串 结果为bool值.
bool isTrue4 = str7.Contains(joinStr);
Console.WriteLine(isTrue4);
bool isTrue5 = joinStr.Contains(str7);
Console.WriteLine(isTrue5);
string str8 = null;
string str9 = "";
bool isTrue6 = string.IsNullOrEmpty(str9);
Console.WriteLine(isTrue6);
if (str8 == null || str8 == "")
{
Console.WriteLine("字符串为空");
}
if (string.IsNullOrEmpty(str9)) {
Console.WriteLine("字符串为空");
}
三.格式化字符串方式
方式1 +拼接
string str1 = "abc";
string str2 ="hjk";
Console.WriteLine(str1+str2);
方式2 占位符 {变量索引值}
string str3 = "abc";
int intNumber = 100;
Console.WriteLine("{0}{1}",str3,intNumber);
Console.WriteLine("{0}{0}",str3,intNumber);
//数组越界
// Console.WriteLine("{0}{2}", str3,intNumber);
Console.WriteLine("这是"+"{0}"+"这是"+"{1}",str3,intNumber);
Console.WriteLine("这是{0}这是{1}",str3,intNumber);
四. C# 语法
int i = 12345;
Console.WriteLine("{0:C}", i); //货币
Console.WriteLine("{0:D}", i); //十进制数
Console.WriteLine("{0:E}", i); //科学技术法
Console.WriteLine("{0:F}", i); // 浮点数表示法
Console.WriteLine("{0:G}", i); //G或g General 常用格式
Console.WriteLine("{0:N}", i); //N或n 用逗号分割千位的数字
五.获得当前时间
DateTime dateTime = DateTime.Now;
Console.WriteLine(dateTime.ToString());
Console.WriteLine("{0:D}", DateTime.Now); //输出到天
Console.WriteLine("{0:y}", DateTime.Now); //输出到月
Console.WriteLine("{0:m}", DateTime.Now); //取出是那个月
Console.WriteLine("{0:T}", DateTime.Now); // 取长时间到秒
Console.WriteLine("{0:t}", DateTime.Now); //取短时间到分
Console.WriteLine("{0:tt}", DateTime.Now); //取出是上午还是下午
六.string.Format方法
1.可以使用string.Format方法来格式化字符串
2.string.Format方法和使用new关键字创建字符串对象的区别在于:
1.使用string.Format方法可以在一个字符串中插入多个参数,并且可以在插入参数时指定格式和宽度。而使用new关键字创建字符串对象时,需要手动拼接字符串或使用字符串插值语法。
2.string.Format方法可以在格式字符串中使用占位符来标识要插入的参数的位置,而使用new关键字创建字符串对象时,需要明确指定要插入的参数的位置。
3.string.Format方法是一个静态方法,可以直接通过类名调用,而使用new关键字创建字符串对象时,需要通过实例化字符串类来创建对象。
string abcStr = string.Format("abc");
string abcStr1 = string.Format("{0}{1}{2}", 'a', 'b', 'c');
//示例:
int number = 42;
string name = "John Doe";
DateTime date = DateTime.Now;
string formattedString = "Number: " + number + ", Name: " + name + ", Date: " + date;
// 输出:Number: 42, Name: John Doe, Date: 9/1/2021 1:23:45 PM
//,使用new关键字创建字符串对象时,需要手动拼接字符串,代码相对冗长。而使用string.Format方法可以更简洁地实现字符串的格式化