一、常见值类型:int double float 枚举 结构体 bool decimal char 存储在栈上
引用类型:数组 字符串 类 接口 存储在堆上
二、字符串具有不可变性
实际上,s2依然是草帽姐。为什么呢?因为字符串具有不可变性。当给字符串重新赋值的时候,会为该变量重新开辟空间
当你给一个字符串重新赋值后,老值并没有被销毁,而是重新开辟一块空间存储新值。程序结束后,
GC扫描整个内存,如果发现有的空间没有被指向,则立即收回。
三、可以把字符串当做一个char数组
1、命名空间
怎样引入命名空间,1)在拼写正确的前提下,点击该对象,会出现黄灯,点击它,会自动添加命名空间
2)Alt+Shift+F10
四、字符串的常用方法
1、属性:length 记录字符串的长度。
2、ToUpper():将字符串转换成大写字母
//string s1 = "Welcome to ShanDong";
//string s2 = s1.ToUpper(); //小写转大写
//string s3 = s1.ToLower(); //大写哦转小写
//Console.WriteLine(s3);
3、Equals(str,StringComparation.OrdinalIgnalCase):判断两个字符串是否相等
string s1 = "Dear";//两情若是久长时,又岂在朝朝暮暮";
string s2 = "dear"; //两情若是久长时,又岂在朝朝暮暮";
bool b = s1.Equals(s2,StringComparison.OrdinalIgnoreCase);//忽略大小写比较是否相等
Console.WriteLine(b);
4、Split(char[] seperator,StringSplitOptions.RemoveEmptyEntries):将字符串按照指定的分隔符分割成字符串数组
5、bool Contains(string value):判断字符串中是否含有子串value
//string s = "床前明月光,疑是地上霜";
//bool b = s.Contains("明月");
//Console.WriteLine(b);
6、string Replace(string oldValue,string newValue):将字符串中出现oldValue的地方替换成newValue。
//string Replace(string oldValue, string newValue):将字符串中出现oldValue的地方替换成newValue。
// string str = "我有点饿了,中午想吃牛肉板面";
//string s= str.Replace("牛肉板面", "满汉全席");
// Console.WriteLine(s);
7、 string SubString(int startIndex):取从startIndex开始一直到最后的子字符串
//string s = "吃板面的时候加个鸡蛋";
//string s1=s.Substring(6, 4); //从哪个下标开始,取几个字符
//Console.WriteLine(s1);
8、bool StartsWith(string value):判断字符串是否以子串value开始
string s = "不以结婚为目的的谈恋爱,都是耍流氓";
bool b=s.StartsWith("不");
bool c = s.EndsWith("流氓");
Console.WriteLine(c);
9、//IndexOf(string value):取子串value第一次出现的位置
string s = "有的人活着,他已经死了,有的人死了,却还活着";
int index=s.IndexOf("活着");
int dd=s.LastIndexOf("活着");
Console.WriteLine(index);
10、 //trim():取消字符串前后的空格
// trimEnd():取消字符串后面的空格
//TrimStart():取消字符串前面的空格
string s = " 文章 ";
string s1=s.Trim();
Console.WriteLine(s1);
练习一、两个学员各自输入自己喜欢的课程,判断是否一致,如果一致,
则输出你们俩喜欢相同的课程;如果不一致,则输出你们俩喜欢不同的课程。
练习二、接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。“a b c”->“c b a”
练习三、接收用户输入的一句英文,将其中的单词以反序输出。
练习四、从Email中提取出用户名和域名:abc@163.com
练习五、文本文件中存储了多个文章标题、作者、标题和作者之间用若干(数量不定)隔开,每行一个,标题有的长有的短,
输出到控制台的时候最多标题长度10,如果超过10,则截取长度8的子串并且最后添加“…”,加一个竖线后输出作者的名字。
练习六、让用户输入一句话,找出所有e的位置。
练习七、用户输入一句话,判断话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:老牛很邪恶-》老牛很**
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Day9zy_machenxi
{
class Program
{
static void Main(string[] args)
{
#region 练习七、用户输入一句话,判断话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:老牛很邪恶-》老牛很**
Console.WriteLine("练习七、用户输入一句话,将邪恶换成**");
//string strsXE = "老牛很邪恶";
Console.WriteLine("请输入一句话(含邪恶):");
string strsXE = Console.ReadLine();
if (strsXE.Contains("邪恶"))
{
strsXE = strsXE.Replace("邪恶", "**");
}
Console.WriteLine(strsXE);
#endregion
#region 练习六、让用户输入一句话,找出所有e的位置。
Console.WriteLine("\n\n练习六、让用户输入一句话,找出所有e的位置");
//string strsE = "Hello,employee!";
Console.WriteLine("请输入一句话(含e)");
string strsE = Console.ReadLine();
int indexE = strsE.IndexOf('e');
int countE = 0;
while (true)
{
countE++;
Console.WriteLine("第{0}次出现e的位置在:{1}", countE, indexE+1);
indexE = strsE.IndexOf('e', indexE + 1);
if (indexE == -1)
{
break;
}
}
#endregion
#region 练习五、文本文件中存储了多个文章标题、作者、标题和作者之间用若干(数量不定)隔开,每行一个,标题有的长有的短,
Console.WriteLine("\n\n练习五、读取文本文件中的多个文章标题");
//输出到控制台的时候最多标题长度10,如果超过10,则截取长度8的子串并且最后添加“…”,加一个竖线后输出作者的名字。
String[] lines = File.ReadAllLines(@"test1.txt", Encoding.Default);
//遍历每行(每行为一个string) 循环遍历lines数组中的每一个元素
Console.WriteLine("文章标题、作者为:");
foreach (String line in lines)
{
//以空格作为分隔符,返回分割的子字符串
String[] zh = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
//取得标题
String title = zh[0];
//取得作者
String author = zh[1];
//截取标题长度
String title1 = title.Substring(0);
//标题长度是否大于10
if (title.Length > 10)
{
//截取标题长度,取前八位
title1 = title.Substring(0, 7);
//后面的位数用...填充
title1 = title1 + "...";
}
Console.WriteLine("{0}|{1}", title1, author);
}
#endregion
#region 练习四、从Email中提取出用户名和域名:abc@163.com
Console.WriteLine("\n\n练习四、从Email中提取出用户名和域名\neg:abc@163.com");
string Email = "abc@163.com";
int eIndex = Email.IndexOf('@');
string yonghuming = Email.Substring(0, eIndex);
int dIndex = Email.IndexOf('.');
//163:string yuming=Email.Substring(eIndex+1,dIndex-eIndex-1);
string yuming = Email.Substring(eIndex + 1);
Console.WriteLine("用户名为:{0}", yonghuming);
Console.WriteLine("域名为:{0}", yuming);
#endregion
#region 练习三、接收用户输入的一句英文,将其中的单词以反序输出。
Console.WriteLine("\n\n练习二、接收用户输入的字符串,将其中的字符以与输入相反的顺序输出");
//string hcs = "Hello C Sharp";
Console.WriteLine("请输入一句英文:");
string hcs = Console.ReadLine();
string[] hcsNew = hcs.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
string hcsTemp;
for (int i = 0; i < hcsNew.Length / 2; i++)
{
hcsTemp = hcsNew[i];
hcsNew[i] = hcsNew[hcsNew.Length - 1 - i];
hcsNew[hcsNew.Length - 1 - i] = hcsTemp;
}
hcs = string.Join(" ", hcsNew);
Console.WriteLine(hcs);
#endregion
#region 练习二、接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。“a b c”->“c b a”
Console.WriteLine("\n\n练习二、接收用户输入的字符串,将其中的字符以与输入相反的顺序输出");
Console.Write("请输入一组字符串:");
string reStrs = Console.ReadLine();
char[] reChars = reStrs.ToCharArray();
for(int i = 0; i < reChars.Length / 2; i++)
{
char temp= reChars[i];
reChars[i] = reChars[reChars.Length - 1 - i];
reChars[reChars.Length - 1 - i] = temp;
}
reStrs = new string(reChars);
Console.Write("翻转后的字符串为:");
Console.WriteLine(reStrs);
#endregion
#region 练习一、两个学员各自输入自己喜欢的课程,判断是否一致,如果一致,
//则输出你们俩喜欢相同的课程;如果不一致,则输出你们俩喜欢不同的课程。
Console.WriteLine("\n\n练习一、两个学员各自输入自己喜欢的课程,判断是否一致");
Console.WriteLine("请第一个学员输入自己喜欢的课程:");
string s1 = Console.ReadLine();
Console.WriteLine("请第二个学员输入自己喜欢的课程:");
string s2 = Console.ReadLine();
bool b = s1.Equals(s2, StringComparison.OrdinalIgnoreCase);
if (b)
{
Console.WriteLine("两个学员喜欢的课程相同,都是{0}。",s1);
}
else
{
Console.WriteLine("两个学员喜欢的课程不同,第一个喜欢{0},第二个喜欢{1}。", s1,s2);
}
#endregion
Console.ReadLine();
}
}
}