C#基础知识及题目练习 Day7 字符串

一、常见值类型: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();
        }
    }
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值