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#调用COM组件
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#托管堆对象实例包含内容分析
- C#实现按照指定长度在数字前补0方法小结
- C#虚方法的声明和使用实例教程
- C#获取文件夹及文件的大小与占用空间的方法
- C#定义简单的反射工厂实例分析
- C#数字图象处理之肤色检测的方法
- C#实现用于操作wav声音文件的类实例
- C#选择排序法实例分析
- C#线程间不能调用剪切板的解决方法