s1,s2同一个地址。
字符串
(1)字符串的不可变性
(2)我们可以将字符串看作是char类型的一个只读数组
ToCharArray(); 将字符串转为数组
new string(char[] chs); 将数组转为字符串
一切类型都可以调用.ToString()方法转换成字符串类型。
s = new string(chs);
字符串提供的各种方法
(1)Length:获得当前字符串中字符的个数。
(2)ToUpper():将字符串转换成大写。
(3)ToLower():将字符串转换成小写。
(4)Equals():比较两个字符串,可以附加条件。
例如:string1.Equals(string2,StringComparison.OrdinalIgnoreCase)// 忽略大小写
(5) Split():分割字符串,返回字符串类型的数组。
StringSplitOptions.RemoveEmptyEntries 将返回的null消除
(6)Substring():截取字符串,在截取的时候包含要截取的那个位置。
(7)IndexOf():判断某个字符串在字符串中第一次出现的位置,返回int型,如果没有返回-1。
(8)LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,返回int型,如果没有返回-1。
(9)StartWith():判断以…开始。
(10)EndWith():判断以…结束。
(11)Replace():将字符串中某个字符替换成一个新的字符串。
(12)Contains():判断某个字符串是否包含指定的字符串。
(13)Trim():去掉字符串中首尾的空白字符。
(14)TrimStart():去掉字符串前面的空白字符。
(15)TrimEnd():去掉字符串后面的空白字符。
(16)string.IsNullOrEmpty():判断一个字符串是否为空或者为null。
(17)string.Join():将数组按照指定的字符串连接,返回一个字符串。
(5)Split():字符串的分割,返回字符串类型的数组
using System;
using System.Diagnostics;
using System.Text;
namespace _057_面对对象继承_04_字符串的方法
{
class Program
{
static void Main(string[] args)
{
//string s1 = "张三";
//string s2 = "张三";
#region 将字符串看作是char类型的一个只读数组
////可以将字符串看作是char类型的一个只读数组
//string s = "abcdefghijklmnopqrstuvwxyz";
////s[0] = 'b'; 报错,因为是只读的。
////如果要改变字符串中某一元素个体,首先将字符串转换为char类型的数组
//char[] chs = s.ToCharArray();
//chs[0] = 'b';
////将字符串数组转为字符串
//s = new string(chs);
////看作char类型的只读数组,所以我们可以通过下标去访问字符串中的某一个元素
//Console.WriteLine(s[0]);
#endregion
#region 字符串方法
// 一 Length 字符串长度
//Console.WriteLine("请输入一个字符串:");
//string ssss = Console.ReadLine();
//Console.WriteLine("这个字符串的长度为:{0}", ssss.Length);
//二 比较字符串(无视大小写)
Console.WriteLine("请输入一个字符串:");
string lessonOne = Console.ReadLine();
//将字符串转换为大写
//lessonOne = lessonOne.ToUpper();
Console.WriteLine("请输入另一个字符串:");
string lessonTwo = Console.ReadLine();
//lessonTwo = lessonTwo.ToUpper();
//lessonTwo.ToLower();//转换为小写
//if (lessonOne==lessonTwo)
//Equals 用来比较两个字符串 if (lessonOne.Equals(lessonTwo,枚举类型))
if (lessonOne.Equals(lessonTwo, StringComparison.OrdinalIgnoreCase))//忽略大小写
{
Console.WriteLine("两个字符串相同~");
}
else
{
Console.WriteLine("两个字符串不同!");
}
//三 分割字符串Split //返回值类型为 数组
//StringSplitOptions.RemoveEmptyEntries 将返回的null消除
string sp = "I 2 _ ,,,lov e y+o=u ";
char[] ch = { ' ', '2', '_', '+', '=', ',' };
string[] str = sp.Split(ch,StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < str.Length; i++)
{
Console.Write(str[i]);
}
Console.WriteLine();
//Split练习 2021-09-04 --> 2021年09月04日
string date = "2021-9-4";
string[] Date = date.Split('-', StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("{0}年{1}月{2}日", Date[0], Date[1], Date[2]);
//Date[0] += '年';
//Date[1] += '月';
//Date[2] += '日';
//for (int i = 0; i < Date.Length; i++)
//{
// Console.Write(Date[i]);
//}
//Console.WriteLine();
//四 判断字符串是否还有子串value,bool Contains(string value);
//字符串替换 string Replace(string oldValue, string newValue);
string name = "韦晓龙";
if (name.Contains("龙"))//字符串是否还有子串value
{
name = name.Replace("龙", "*");//字符串替换
}
Console.WriteLine(name);
//五 截取字符串 string Substring(int);
string Mood = "今天天气好啊,爷心情好哇";
//Mood = Mood.Substring(7);//截取字符串至末尾
Mood = Mood.Substring(7,3); //截取字符串,限定长度
Console.WriteLine(Mood);
//六 判断字符串是否以子串value开始/结束 bool StartWith/EndWith(string value);
string Weather = "今天是一个风雨交加的暴风雪天";
if (Weather.StartsWith("今天"))
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
//七 取子串value第一次出现的位置 int IndexOf(string value);
// 取子串value最后一次出现的位置int LastIndexOf(string value);
string words = "qwertyuiopasdfghjklzxcvbnmdhawyubfawdnuiasjfbjbcxksd";
int Index1 = words.IndexOf('d');
int Index2 = words.LastIndexOf('d');
Console.WriteLine(Index1);
Console.WriteLine(Index2);
//LastIndexOf Substring
string path = @"c:\d\s\a\dw\r\we\t\rg\铃原爱蜜莉.avi";
int index = path.LastIndexOf("\\");
path = path.Substring(index+1);
Console.WriteLine(path);
//八 Trim(); 删除前导/尾随空白字符
string s1 = " aaaa ";
s1 = s1.Trim();
//s1.TrimStart();//只删除前导空白字符
Console.WriteLine(s1);
//九 string.IsNullOrEmpty(str); 判断字符串是否为空""或者是null
string s2 = "";
string s3 = null;
bool b1 = string.IsNullOrEmpty(s2);
bool b2 = string.IsNullOrEmpty(s3);
Console.WriteLine(b1);
Console.WriteLine(b2);
//十 string.Join(); 串联对象数组的各个元素,其中在每个元素之间使用指定的分隔符。
string[] names = { "张三", "李四", "王五", "赵六", "田七" };
string Newnames = string.Join('|', names);
//string Newnames1 = string.Join('|', "张三", "李四", "王五", "赵六", "田七");
Console.WriteLine(Newnames);
#endregion
Console.ReadKey();
}
}
}
StringBuilder and String
#region 计算string速度
//string str = null;
////创建了一个计时器,用来记录程序运行的时间
//Stopwatch sw1 = new Stopwatch();
//sw1.Start();//开始计时
//for (int i = 0; i < 100000; i++)
//{
// str += i;
//}
//sw1.Stop();//结束计时
//Console.WriteLine(sw1.Elapsed);//获取当前实例测量得出的总运行时间
// //00:00:08.5092280
#endregion
#region 计算StringBuilder速度
////只开辟了一块空间
//StringBuilder sb = new StringBuilder();
////创建了一个计时器,用来记录程序运行的时间
//Stopwatch sw2 = new Stopwatch();
//sw2.Start();//开始计时
//for (int i = 0; i < 100000; i++)
//{
// sb.Append(i);
//}
//sw2.Stop();//结束计时
//Console.WriteLine(sw2.Elapsed);//获取当前实例测量得出的总运行时间
// //00:00:00.0047001
// //一般都会把StringBuilder -> string
// //Console.WriteLine(sb.ToString());
#endregion