您的位置:首页 > 编程语言 > C#

C# 基础学习第四天

2015-06-10 11:13 429 查看


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();

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#编程语言 c#