C# 基础学习第四天

C# 基础学习第四天

可变参数:

                参数数组:int sum(params int[] values)

                                  int sum(string name,params int[]values)

                可变参数数组必须是最后一个

                参数默认值 (.Net4.0):void

               SayHello(string name,int age=20)(了解)

               static void Main(string[] args)

              {  

                    SayHello("tom","张大虎","狗蛋");   //第一个参数是 name 第二个以后参数是为params string[] nicknames服务的!

                 Console.ReadKey();

              }

             static void SayHello(string name, params string[] nicknames) //params 可变数组!!参数可变

            {

                   Console.WriteLine("我的名字是{0}",name);

                   foreach (string nickname in nicknames)

                  {

                       Console.WriteLine("我的昵称:{0}",nickname);

                  }

            }

                  显示:我的名字是tom

                  我的昵称:张大虎

                  我的昵称:狗蛋


函数重载

构成重载的条件:   

                  //函数的参数必须不一致(函数名称可以重复)

                  //参数类型不同或者参数个数不同,与返回值无关     

 1、函数名相同、参数相同(错误

 static void Main(string[] args)

        {

            SayHello("王大壮");

            SayHello("王小壮");

        }

        static void SayHello(string name)

        {

            Console.WriteLine("我是{0}",name);

        }

        static void SayHello(string name)

        {

            Console.WriteLine("I am{0}"name);

        }

2、函数名相同、参数相同、返回值不同(错误

 static void Main(string[] args)

        {

            SayHello("王大壮");

            string s = SayHello("Tom");

        }

        static void SayHello(string name)

        {

            Console.WriteLine("我是{0}",name);

        }

        static string SayHello(string name)

        {

            return "大家好,我是:"+name;

        }

3、函数名相同、参数不同(正确

 static void Main(string[] args)

        {

            SayHello("王大壮");

            SayHello(20);

            Console.ReadKey();

        }

        static void SayHello(string name)

        {

            Console.WriteLine("我是{0}",name);

        }

        static void SayHello(int age)

        {

            Console.WriteLine("我的年龄{0}",age);

        }

4、函数名相同、参数不同多个参数(正确

static void Main(string[] args)

        {

            SayHello("王大壮");

            SayHello("大大王","孙猴子");

            Console.ReadKey();

        }

        static void SayHello(string name)

        {

            Console.WriteLine("我是{0}",name);

        }

        static void SayHello(string name,string nickname)

        {

            Console.WriteLine("我是{0},昵称是{1}",name,nickname);

        }


字符串的处理:

            ('a')----char类型   一个字符

            string s1 = "a"//想长就长想短就短   不等于 char c1= 'a';//有且只能有一个字符

           使用: 名称.length属性来后的字符串中的字符个数

           例如: string s5 = "hello";

                  Console.WriteLine(s5.Length);//取字符串长度为5 不是6 和C语言不一样,不考虑最后'\0'

                  Console.WriteLine(s5[1]);//取编号为1的字符//打印显示 "e";

                  char c3 = s5[3];//取S5中第三个元素放到C3中

                  for(int i =0;i<s5.Length;i++)

                  {

                        char c6 = s5[i]

                        console.write(c6)

                  }                

反序输出:static void Main(string[] args)

        {

            string s5 = "hello";

            string s = "";

            for (int i = s5.Length - 1; i >= 0; i--)

            {

                s = s + s5[i];    

            }

            Console.WriteLine(s);

            Console.ReadKey();

        } 


C#中单个字符用单引号包含就是char类型,('a'),单引号中放且只能放一个字符

char c1 ='a';//正确          char c2 ='abc';//错误

单个字符也可以表示为字符串,还可以有长度为0的字符串

string s1 ="hello";   string s2 ="a"; string s3 ="";

使用s.Length属性来获得字符串中的字符个数

string s5 = "hello";

console.writeLine(s5.length);

console.writeline(s5[1]);//第"1"个数为"e"

string可以看做是char的只读数组,char c= s[1];例子:遍历输出string 中的每个元素

//正序反序打印

string s5 = "hello";

            char c3 = s5[3];

            for (int i = 0; i < s5.Length; i++)

            {

                char c6 = s5[i];

                Console.WriteLine(c6);

            }

            for (int i = s5.Length - 1; i >= 0; i--)

            {

                Console.WriteLine(s5[i]);

            }

C#中字符串有一个重要特性:

                         不可变性,字符串一旦声明就不再可以改变,所以只能通过索引来读取指定位置的char,不能对指定的位置的char进行修改。

    如果要对char进行修改,那么就必须创建一个新的字符串,用S.ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串,一旦字符串被创建,那么char数组的修改也不会造成字符串的变化,例子:将字符串中的A替换为a。

//修改字符串       

            string s1 = "hello";

            char[] chars = s1.ToCharArray();//得到hello这个字符串

            chars[0]='a';

            string s2 = new string(chars);

            Console.WriteLine(s2);

            Console.ReadKey();

            // s1= hello  s2 = aello

             

            string s1 = "hello";

            string s10= s1;//s10指向s1指向的字符串,而不是s10指向s1,哪怕s1以后指向其它内存,那么s10还是指向hello;



String 类常用函数

1、ToLower():得到字符串的小写形式。

             s.ToLower()与s=s.ToLower();

             ToUpper();得到字符串的大写形式;

  举例说明:string s = "Hello";//s是不能被改变的

            string str= s.ToLower();//得到一个新的字符串

            // 一般写为 s= s.ToLower()//并不是改变字符串内容,而是生成一个新的全部变为小写的字符串,然后用s指向这个新的字符串。

            Console.WriteLine(str);

            Console.WriteLine(str.ToUpper());//转换成大写

            Console.ReadKey();

注意:字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。


2、Trim()去掉字符串两端的空白。

            string s1 = " ab ";//两边有空格

            s1 = s1.Trim();//去掉两边的空白,只留下有意义的部分

            Console.WriteLine("|{0}|",s1);

            Console.ReadKey();

3、s1.Equals(s2,StringComparison.OrdinallgnoreCase)两个字符串进行比区分大小写的比较

   示例:    bool b = "abc".Equals("ABC",StringComparison.OrdinalIgnoreCase);

            //==是区分大小写的比较,Equals("ABC",StringComparison.OrdinalIgnoreCase);是忽略大小写的比较。

            //IgnoreCase忽略大小写

            //两个字符进行比较区分大小写比较

            Console.WriteLine(b);//结果为true


字符串的分割

一、string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;

重载函数、可变函数  params

aaa,bbb,cccc,adfaf

返回值是一个字符串数组

重点例题: 

               //以单个符号分割输出

            1、 string s1 = "aaa,vvv,ccc,dfafdasf";

                   //把一个字符串以","分隔,分别打印出来每个字符

                   string[] strs = s1.Split(',');//打印一个字符串,以指定的字符分割。重点!!

                   // 只是输出

                   foreach (string item in strs)

                   {

                        Console.WriteLine(item);

                   }

                   Console.ReadKey();

         //以不同符号分割输出

      2、 string s1 = "aaa,vvv,ccc,dfafdasf.fsdfs|hell2232|ffsdf";

            //把一个字符串以","分隔,分别打印出来每个字符

            string[] strs = s1.Split(',','|','.');//打印一个字符串,以指定的字符分割。重点!!

            // 只是输出

            foreach (string item in strs)

            {

                Console.WriteLine(item);

            }

            Console.ReadKey();

 

二、string[] Split(char[] separator,StringSplitOptions options)将字符串按照指定的char分割符法呢个为字符串数组(options 取RemoveEmptyEntrles的时候移除结果中的空白字符串)

    string s1 = "aaa,bb,cc,,12,3";//空的地方被识别为长度为0的字符串,可以使用重载函数清楚

 例题: string[] strs = s1.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);

            foreach(string item in strs)

            {

                Console.WriteLine(item);

            }

            Console.ReadKey();

三、string[] Split(string[] separator,StringSplitOptions options)将字符串按照指定的string分割符分割为字符串数组。

例题:string s1 = "我是杰克逊我是麦克新我是韩庚";

            //按照"我是"进行分隔,字符串分割

            string[] strs = s1.Split(new string[] { "我是" }, StringSplitOptions.RemoveEmptyEntries);

            foreach(string item in strs)

            {

                Console.WriteLine(item);

            }

            Console.ReadKey();


练习: 1、从日期字符串("2008-08-08")中分析出年、月、日;

            string s1 = "2008-08-08";

            string[] strs = s1.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);

            foreach(string item in strs)

            {

                Console.WriteLine(item);

            }

            Console.ReadKey();

          2、从一个记录了学生成绩的文本文档,每个学生成绩是一行,每行是用|分割的数据,用|分割的域分别是姓名、年龄、成绩,写程序取出成绩最高学生的姓名和成绩。

参考使用string[]lines=System.IO.File.ReadAllLines(@"c:\root.int",Encoding.Default);从文本文件读取数据,返回值为string数组,每个元素是一行。

 ???????????????????????????????


字符串函数详解

1、字符串替换:string Replace(string oldValue,string newValue)将字符串中的出现oldValue的地方替换为newValue。

例如:名字替换

           string s = "李时珍同志是一个好同志,是一个好医生,向李时珍通知学习";

            s = s.Replace("李时珍","李素丽");//内容不可变,生成新字符串

            Console.WriteLine(s);

            Console.ReadKey();

            //帖子里面敏感词都变成“*”思路是这样的

2、取子字符串:string SubString(int startIndex)取从位置startIndex开始一直到最后的子字符串;

       string s ="http://www.baidu.com";

            string 域名 =s.Substring(7);//取子字符串,从指定字符串开始,一直到最后
            Console.WriteLine(域名);
            Console.ReadKey();

3、string Substring(int starIndex,int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不够length则报错。

       string s ="http://www.baidu.com";

            string 域名 =s.Substring(7,5);//第二个参数是指截取多长,而不是截取位置,截取长度一定要够长
            Console.WriteLine(域名);
            Console.ReadKey();

4、bool Contains(string value)判断字符串中是否含有子串value 

            string s = "我们的社会真和谐啊";

            if (s.Contains("社会") || s.Contains("和谐"))

            {

                Console.WriteLine("含有敏感词汇,请文明用语!");

            }

            Console.ReadKey();

   例如:判断是不是网址,只需要判断是不是以http开头的就可以了

5、bool StartsWith(string value)判断字符串是否以子串value开始

           string s = "http://www.cctv.com";

            if (s.StartsWith("http://") || s.StartsWith("https://"))
            {
                Console.WriteLine("网址");
            }
            else
            {
                Console.WriteLine("不是网址");
            }
            Console.ReadKey();

6、bool EndWith(string value)同上,判断字符串是否以子串value结束;

7、int  Indexof(string value);取子串value第一次出现的位置

            //返回子字符串的第一个字符第一次出现的位置

            //如果没有查询到相关字符,则输出"-1"

            string s = "你好,我是王某某";

            int i = s.IndexOf("我是");

            Console.WriteLine(i);

练习:1、接收用户输入的字符串,将其中的字符以与输如相反的顺序输出。

       Console.WriteLine("请输入字符串:"); 

            string str = Console.ReadLine();

            string s = "";

            for (int i = str.Length - 1; i >= 0; i--)

            {

                s = s + str[i];

            }

            Console.WriteLine(s);

            Console.ReadKey();


   



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值