- 字符串
- 字符串的基本操作
- 字符串大小写转换
- 字符串的比较
- Equals
- 字符串的格式化
- 字符串的截取
- 字符串的分割
- 字符串的合并
- 字符串的插入
- 字符串的填充
- 字符串的删除
- 字符串的修剪
- 字符串的复制
- 字符串的替换
- StringBuilder类
- 定义
- 设置StringBuilder类的容量
- 追加操作
- 插入操作
- 删除操作
- 替换操作
- 正则表达式
- Regex类
- Match类
- 集合与泛型
- 常用集合类型
- 动态数组
- 堆栈类
- 队列类
- Hashtable类
- Dictionary类
string str = "Study hard and get up every day!";
Console.WriteLine("大写字符串: " + str.ToUpper());
Console.WriteLine("小写字符串: " + str.ToLower ());
char mychar = 'a';
Console.WriteLine("大写字符: " + char.ToUpper(mychar));
Console.WriteLine("小写字符: " + char.ToUpper(mychar));
字符串的比较
string str1 = "Hello";
string str2 = "Hi";
string str3 = "HELLO";
Console.WriteLine(string.Compare(str1, str2));//如果str1小于str2返回-1,str1大于str2返回1,相等则返回0
Console.WriteLine(string.Compare(str1, str3, true));//true代表忽略大小写进行比较
Console.WriteLine(str1.CompareTo(str2));
Equals
判断两个字符串是否相同
string str1 = "Hello";
string str2 = "HELLO";
Console.WriteLine(Equals(str1, str2));
Console.WriteLine(str1.Equals(str2));
字符串的格式化
Console.WriteLine("使用Format方法,将1-10按照三位数输出: ");
for(int i=1;i<=10;i++)
{
string str = string.Format("{0:D3}", i);
Console.WriteLine(str);
}
字符串的截取
string str = "0123456789";
string s1 = str.Substring(3);//从索引为3后一位的字符开始截取
Console.WriteLine(s1);
string s2 = str.Substring(2, 5);//从索引2后一位的字符开始截取,截取5位。
Console.WriteLine(s2);
字符串的分割
string str = "大家好%,欢迎=学习C#!";
Console.WriteLine("原来的字符串为: " + str);
Console.WriteLine("使用Split方法进行分割");
char[] separator = { '%', '=' };
string[] changestr = str.Split(separator);//分割字符串
foreach(string outstr in changestr)
{
Console.WriteLine(outstr);
}
字符串的合并
1.连接运算符“+”
string str1 = "大家好!";
string str2 = "欢迎学习C#!";
string newstr = str1 + str2;
Console.WriteLine(newstr);
- Concat方法
string str1 = "大家好!";
string str2 = "欢迎学习C#!";
string arr = string.Concat(str1, str2);
Console.WriteLine(arr);
3.Join方法
string str1 = "ABC";
string str2 = "7752";
string str3 = "#%$%";
string newstr = string.Join("-", str1, str2, str3);
Console.WriteLine(newstr);
字符串的插入
string str = "Hello,C";
string newstr = str.Insert(7, "#");//表示在第七个字符串的位置上插入字符串
Console.WriteLine(newstr);
字符串的填充
string str1 = "33";
string str2 = "444";
string str3 = "5555";
string newstr1 = str1.PadRight(5, '*');//使用padright是字符串右对齐,使用*填充;
Console.WriteLine(newstr1);
string newstr2 = str2.PadLeft(5, '*');
Console.WriteLine(newstr2);
字符串的删除
string str = "123456789";
string str1 = str.Remove(4);//从索引处4处开始移除
string str2 = str.Remove(3, 5);//从索引处3处移除5个字符
Console.WriteLine(str1);
Console.WriteLine(str2);
字符串的修剪
Trim方法删除字符串首部和尾部的空格
TrimStart只删除字符串头部的空格
TrimEnd只删除字符串尾部的空格
string str = " hello world ";
Console.WriteLine("原字符串为:"+str);
string str1 = str.Trim();
Console.WriteLine("修剪首尾空格为: " + str1);
string str2 = str.TrimStart();
Console.WriteLine("修剪首空格为: " + str2);
string str3 = str.TrimEnd();
Console.WriteLine("修剪尾处空格为: " + str3);
string str = "%#$#Hello-World@%";
Console.WriteLine("修剪其他字符的方法: " + str.Trim('%', '#', '$', '@'));
字符串的复制
1.copy方法
2.copyto方法
string str = "haohaoxuexi tiantianxiangshang";
string newstr = string.Copy(str);
Console.WriteLine(newstr);
char[] newstr2 = new char[20];
str.CopyTo(11, newstr2, 0, 6);//第一个参数是复制的字符起始位置,第三个参数为目标数组的开始错放位置,第四个参数就是复制的字符个数
Console.WriteLine(newstr2);
字符串的替换
string str1 = "haohaoxuexi";
Console.WriteLine("替换前的字符串: " + str1);
string newstr = str1.Replace('x', 'X');//将小写x换成大写X
Console.Write(newstr);
StringBuilder类
定义
string Builder类位于命名空间System.Text中,使用时,通过头文件引入该空间。
using System.Text;
声明string Builder类对象需要使用new关键字,并对其进行初始化。
例如:
StringBuilder strbui = new StringBuilder("Hello World");
设置StringBuilder类的容量
设置StringBuilder容量的意义在于,修改stringbuilder字符串时,在其实际字符长度未达到其容量之前,stringbuilder不会重写分配空间。在达到容量时,会在其基础上自动进行设置。stringbuilde默认初始分配16个字符长度。
StringBuilder类与String类的区别在于?
两者在很多操作上是相似的。
但是在操作性能和内存效率方面,StringBuilder好很多,可以避免产生太多临时字符串对象,特别是对于重复修改的情况更是如此。另一方面,String类提供了更多的方法,可以更快实现应用。
1.使用构造函数
StringBuilder strbui = new StringBuilder("Hello World",100);
2.使用Capacity读/写属性
StringBuilder strb = new StringBuilder("Hello");
strb.Capacity = 100;
追加操作
1.Append方法
StringBuilder strb = new StringBuilder("Hello");
strb.Append(" world");
2.AppendFormat方法
StringBuilder strb = new StringBuilder("Today is ");
strb.AppendFormat("{0:yyyy-MM-dd}", System.DateTime.Now);
Console.WriteLine(strb);
插入操作
StringBuilder strb = new StringBuilder("Hello World!");
strb.Insert(6, "beautiful");//索引为6处开始插入字符串
Console.WriteLine(strb);
删除操作
StringBuilder strb = new StringBuilder("Hello World!");
strb.Remove(5, 7);//从索引处5开始,删除7个字符
Console.Write(strb);
替换操作
StringBuilder strb = new StringBuilder("Hello World!");
strb.Replace('!', '%');//将字符!替换为%
Console.WriteLine(strb);
正则表达式
正则表达式为一种文本模式。
Regex类在c#中使用正则表达式主要通过Regex类来实现。
string str = "2md13nabcttac";
Regex regex = new Regex("abc");
if(regex.IsMatch(str))//判断字符串str中是否有abc
{
Console.WriteLine("字符串中含有abc");
}
Match类
Regex regex = new Regex("abc");
Match m = regex.Match("123abc456");//在字符串中进行匹配
if(m.Success)//success用于判断匹配是否成功
{
Console.WriteLine("确定字符串匹配的位置: " + m.Index);
}
@在正则表达式中的作用?
以@开头,这样的优点在于是转义序列不被处理。
1.元素的添加
ArrayList arr1 = new ArrayList(5);
Console.WriteLine("查看ArrayList中实际包含的元素个数: {0}", arr1.Count);
Console.WriteLine("Add方法: ");
arr1.Add(10);
arr1.Add('m');
arr1.Add('A');
arr1.Add("hello ");
arr1.Add(3.14);
Console.WriteLine("使用Add方法添加5个元素后,元素的个数为: {0}", arr1.Count);
string[] a = { "张三", "李四", "王五" };
arr1.AddRange(a);
Console.WriteLine("使用AddRange方法以后,元素个数为: {0}", arr1.Count);
Console.WriteLine("遍历集合为: ");
foreach(object i in arr1)
{
Console.Write(i + "t");
}
2.元素的删除
ArrayList arr1 = new ArrayList(5);
Console.WriteLine("查看ArrayList中实际包含的元素个数: {0}", arr1.Count);
Console.WriteLine("Add方法: ");
arr1.Add(10);
arr1.Add('m');
arr1.Add('A');
arr1.Add("hello ");
arr1.Add(3.14);
Console.WriteLine("使用Add方法添加5个元素后,元素的个数为: {0}", arr1.Count);
string[] a = { "张三", "李四", "王五" };
arr1.AddRange(a);
Console.WriteLine("使用AddRange方法以后,元素个数为: {0}", arr1.Count);
Console.WriteLine("遍历集合为: ");
foreach(object i in arr1)
{
Console.Write(i + "t");
}
arr1.Remove("张三");
Console.WriteLine();
foreach (object i in arr1)
{
Console.Write(i + "t");
}
arr1.RemoveAt(3);//指定移除索引值
Console.WriteLine();
foreach (object i in arr1)
{
Console.Write(i + "t");
}
arr1.RemoveRange(3, 2);
Console.WriteLine();
foreach (object i in arr1)
{
Console.Write(i + "t");
}
arr1.Clear();
Console.WriteLine();
foreach (object i in arr1)
{
Console.Write(i + "t");
}
3.遍历与查找
ArrayList arr1 = new ArrayList(5);
Console.WriteLine("查看ArrayList中实际包含的元素个数: {0}", arr1.Count);
Console.WriteLine("Add方法: ");
arr1.Add(10);
arr1.Add('m');
arr1.Add('A');
arr1.Add("hello ");
arr1.Add(3.14);
Console.WriteLine("使用Add方法添加5个元素后,元素的个数为: {0}", arr1.Count);
string[] a = { "张三", "李四", "王五","李四" };
arr1.AddRange(a);
Console.WriteLine("使用AddRange方法以后,元素个数为: {0}", arr1.Count);
Console.WriteLine("遍历集合为: ");
foreach(object i in arr1)
{
Console.Write(i + "t");
}
Console.WriteLine();
Console.WriteLine(arr1.IndexOf("李四"));
Console.WriteLine(arr1.LastIndexOf("李四"));
堆栈类
常见方法:
clear
contains
peek
pop
push
ToArray
Stack st = new Stack();
Console.WriteLine("Push方法");
Console.WriteLine("向栈顶添加四个对象");
st.Push('a');
st.Push('b');
st.Push('c');
st.Push('d');
Console.WriteLine("遍历Stack");
foreach(char c in st)
{
Console.Write(c + " ");
}
Console.WriteLine("nPeek方法");
Console.WriteLine("堆栈顶部的对象为:{0}", st.Peek());
st.Pop();
Console.WriteLine("移除堆栈顶部的对象: ");
foreach(char c in st)
{
Console.WriteLine(c + " ");
}
队列类
方法为:
Enqueue
Dequeue
Queue queue = new Queue();
queue.Enqueue('a');
queue.Enqueue('b');
queue.Enqueue('c');
queue.Enqueue('d');
Console.WriteLine("遍历队列: ");
foreach(char c in queue)
{
Console.Write(c + " ");
}
Console.WriteLine("再添加两个元素: ");
queue.Enqueue('e');
queue.Enqueue('f');
Console.WriteLine("遍历队列: ");
foreach (char c in queue)
{
Console.Write(c + " ");
}
Console.WriteLine("移除开头两个元素: ");
Console.WriteLine("移除第一个元素: {0}", queue.Dequeue());
Console.WriteLine("移除第二个元素: {0}", queue.Dequeue());
Console.WriteLine("遍历队列: ");
foreach (char c in queue)
{
Console.Write(c + " ");
}
Hashtable类
Hashtable ht = new Hashtable();
Console.WriteLine("元素添加: ");
ht.Add(1, "星期一");
ht.Add(2, "星期二");
ht.Add(3, "星期三");
ICollection key = ht.Keys;//获取键值
foreach(object k in key)
{
Console.WriteLine(k + ": " + ht[k]);
}
Console.WriteLine("元素添加方法二: ");
ht[4] = "星期四";
ht[1] = "星期五";
foreach (object k in key)
{
Console.WriteLine(k + ": " + ht[k]);
}
Console.WriteLine("哈希表包含的键值对个数: {0}", ht.Count);
遍历:
Hashtable ht = new Hashtable();
Console.WriteLine("元素添加: ");
ht.Add(1, "星期一");
ht.Add(2, "星期二");
ht.Add(3, "星期三");
ht[4] = "星期四";
Console.WriteLine("遍历方法一: ");
foreach(DictionaryEntry obj in ht)
{
Console.WriteLine("键为{0},值为{1}", obj.Key, obj.Value);
}
Console.WriteLine("遍历方法二: ");
foreach(object obj in ht.Keys)
{
Console.WriteLine("键为{0},值为{1}", obj, ht[obj]);
}
删除:
Hashtable ht = new Hashtable();
Console.WriteLine("元素添加: ");
ht.Add(1, "星期一");
ht.Add(2, "星期二");
ht.Add(3, "星期三");
ht[4] = "星期四";
Console.WriteLine("遍历方法一: ");
foreach(DictionaryEntry obj in ht)
{
Console.WriteLine("键为{0},值为{1}", obj.Key, obj.Value);
}
Console.WriteLine("Remove方法: ");
ht.Remove(4);
foreach (DictionaryEntry obj in ht)
{
Console.WriteLine("键为{0},值为{1}", obj.Key, obj.Value);
}
Console.WriteLine("clear方法: ");
ht.Clear();
foreach (DictionaryEntry obj in ht)
{
Console.WriteLine("键为{0},值为{1}", obj.Key, obj.Value);
}
查找:
containkey
containvalue
Hashtable ht = new Hashtable();
Console.WriteLine("元素添加: ");
ht.Add(1, "星期一");
ht.Add(2, "星期二");
ht.Add(3, "星期三");
ht[4] = "星期四";
Console.WriteLine("遍历方法一: ");
foreach(DictionaryEntry obj in ht)
{
Console.WriteLine("键为{0},值为{1}", obj.Key, obj.Value);
}
Console.WriteLine("判断Hsahtable是否包括的键3");
if(ht.ContainsKey(3))
{
Console.WriteLine("存在该键");
}
if (ht.ContainsValue("星期一")) Console.WriteLine("存在该值");
else Console.WriteLine("不存在该值");
Dictionary类
c#中,Dictionary提供快速的基于键值的元素查找。
Dictionarydc = new Dictionary (); dc.Add(1, "C#"); dc.Add(2, "C++"); dc.Add(3, "ASP.NET"); dc.Add(4, "MVC"); Console.WriteLine("KeyValuePair遍历元素: "); foreach(KeyValuePair kvp in dc) { Console.WriteLine("key={0}; value={1}", kvp.Key, kvp.Value); } Console.WriteLine("通过Key查找元素: "); if(dc.ContainsKey(1)) { Console.WriteLine("Key={0},Value;{1}", "1", dc[1]); } Console.WriteLine("仅遍历键Keys属性: "); Dictionary .KeyCollection keycol = dc.Keys; foreach(int key in keycol) { Console.WriteLine("Key={0}", key); } Console.WriteLine("仅遍历Values属性: "); Dictionary .ValueCollection valuecol = dc.Values; foreach(string value in valuecol) { Console.WriteLine("Value = {0}", value); } Console.WriteLine("Remove方法移除元素"); dc.Remove(1); if(dc.ContainsKey(1)) { Console.WriteLine("Key: {0},Value: {1}", "1", dc[1]); } else { Console.WriteLine("不存在Key :1"); }



