04---Net基础加强
字符串常用方法:
属性: Length获取字符串中字符的个数
IsNullOrEmpty() 静态方法,判断为null或者为“”
ToCharArray() 将string转换为char[]
ToLower() 小写,必须接收返回值(因为字符串的不变性)
ToUpper() 大写
Equals() 比较两个字符串是否相同,忽略大小写的比较,StringComparation
IndexOf() 如果没有找到对应的数据,返回-1
LastIndexOf() 如果没有找到对应的数据,返回-1
Substring() //2个重载,截取字符串
Split() //分割字符串
Join() 静态方法
Format() 静态方法
Repalce()
举例: IsNullOrEmpty() 静态方法,判断为null或者为“”
class Program
{
static void Main(string[] args)
{
//string msg = "你好,China";
//string msg = "";
string msg = null;// msg.Length后面会报错
//判断字符串是否为空
//if (msg == "")
if (string.IsNullOrEmpty(msg))
{
Console.WriteLine("空字符串!!!!");
}
else
{
Console.WriteLine("非空字符串!!!!");
}
Console.WriteLine(msg.Length);
Console.ReadKey();
}
}
字符串的不可变性
class Program
{
static void Main(string[] args)
{
//字符串的不可变性指的是字符串一旦声明就不可改变
string s1 = "abc";
s1 = s1 + "d";
Console.WriteLine(s1); //输出abcd
Console.ReadKey();
}
}
ToUpper() 大写
class Program
{
static void Main(string[] args)
{
//string msg = "hEllo";
////字符串修改完成后必须接收返回值,因为字符串具有不可变性,无法直接修改原来的字符串
//msg=msg.ToUpper();
//Console.WriteLine(msg);
//Console.ReadKey();
}
}
为什么字符串中的equals方法和==不能判断两个对象是否相同呢?因为字符串中有一个equals方法时判断字符串只要每个字符相同就返回true,并且字符串类型对运算符==进行了重载,也是调用的equals()方法!所以通过equals方法和==不能判断两个对象是否相同!
class Program
{
static void Main(string[] args)
{
string s1 = "abc";
string s2 = "abc";
Console.WriteLine(s1.Equals(s2)); //true
Console.WriteLine(s1 == s2); //true
Console.WriteLine(object.ReferenceEquals(s1, s2)); //true
Console.ReadKey();
}
}
此时s1和s2确实为同一个对象, string s1 = "abc"; string s2 = "abc"; 这是因为字符串的“暂存池”(字符串池,字符串拘留池)特性 与下面的
string s1 = new string(new char[]{'a','b','c'});
string s2 = new string(new char[] { 'a','b','c' });
效果不一样,只要出现了new关键字,就表示一定会创建一个新对象
class Program
{
static void Main(string[] args)
{
string s1 = new string(new char[]{'a','b','c'});
string s2 = new string(new char[] { 'a','b','c' });
Console.WriteLine(s1.Equals(s2)); //true
Console.WriteLine(s1 == s2); //true
Console.WriteLine(object.ReferenceEquals(s1, s2)); //false
Console.ReadKey();
}
}
IndexOf() LastIndexOf()
class Program
{
static void Main(string[] args)
{
string msg = "我爱你北京天安门,天安门上太阳升。我家不住天安门,天安门上有保安";
int index = msg.IndexOf("天安门"); //5
//int index = msg.LastIndexOf("天安门"); //
Console.WriteLine(index);
Console.ReadKey();
}
}
Substring() //截取字符串,2个重载,没有传递截取长度则截取到最后
class Program
{
static void Main(string[] args)
{
string msg = "听说过叶长种吗?";
//从坐标为3的索引开始截取,截取长度为3
msg=msg.Substring(,);
Console.WriteLine(msg); // 结果为叶长种
Console.ReadKey();
}
}
Split() //分割字符串
class Program
{
static void Main(string[] args)
{
string msg = "乔丹|科比|叶长种";
string[] name=msg.Split('|');
for (int i = ; i < name.Length; i++)
{
Console.WriteLine(name[i]);
}
Console.ReadKey();
}
}
class Program
{
static void Main(string[] args)
{
string msg = "乔丹|科比|叶长种||||||||詹姆斯";
string[] name=msg.Split(new char[]{'|'},StringSplitOptions.RemoveEmptyEntries);
for (int i = ; i < name.Length; i++)
{
Console.WriteLine(name[i]);
}
Console.ReadKey();
}
}
class Program
{
static void Main(string[] args)
{
string msg = "乔丹|科比|叶长种||||||||詹姆斯";
string[] name = msg.Split(new char[] { '|' }, , StringSplitOptions.RemoveEmptyEntries);//前截取三个 乔丹 科比 叶长种||||||||詹姆斯
for (int i = ; i < name.Length; i++)
{
Console.WriteLine(name[i]);
}
Console.ReadKey();
}
}
Join() 静态方法
class Program
{
static void Main(string[] args)
{
string msg = "乔丹|科比|叶长种||||||||詹姆斯";
string[] name=msg.Split(new char[]{'|'},StringSplitOptions.RemoveEmptyEntries);
string full = string.Join("=====>",name);
Console.WriteLine(full);
Console.ReadKey();
}
}
Format() 静态方法
class Program
{
static void Main(string[] args)
{
//Console.WriteLine("我叫{0},今年{1}岁了,至今{2}","叶长种",25,"未婚");
//Console.ReadKey();
string msg = string.Format("我叫{0},今年{1}岁了,至今{2}", "叶长种", , "未婚");
Console.WriteLine(msg);
Console.ReadKey();
}
}
Repalce()
class Program
{
static void Main(string[] args)
{
string msg = "大家知道传值与引用的区别吗?请来问叶长重吧";
msg = msg.Replace('重', '种');
Console.WriteLine(msg);//输出:大家知道传值与引用的区别吗?请来问叶长种吧
Console.ReadKey();
}
}
class Program
{
static void Main(string[] args)
{
string msg = "大家知道传值与引用的区别吗?请来问叶长重吧,哈哈哈哈";
msg = msg.Replace('重', '种').Replace('哈', '嘿');
Console.WriteLine(msg);
Console.ReadKey();
}
}
字符串练习
输入一个字符串将其字符串以相反的顺序输出如abc输出cba
class Program
{
static void Main(string[] args)
{
//接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。
Console.WriteLine("请输入一个字符串:");
string msg = Console.ReadLine();
msg = ReverseString(msg);
//for (int i = msg.Length-1; i >=0; i--)
//{
// Console.Write(msg[i]);
//}
Console.Write(msg);
Console.ReadKey();
} private static string ReverseString(string msg)
{
Char[] ch = msg.ToCharArray();
for (int i = ; i < ch.Length/; i++)
{
char temp = ch[i];
ch[i] = ch[ch.Length - - i];
ch[ch.Length - - i] = temp;
}
return new string(ch);
}
接收用户输入的一句英文,把里面的单词以相反的顺序输出如 I Love You 输出 uoY evoL I
class Program
{
static void Main(string[] args)
{
//接收用户输入的一句英文,将其中的单词以与输入相反的顺序输出。
Console.WriteLine("请输入一句话:");
string msg = Console.ReadLine();
string[] words = msg.Split(' ');
for (int i = ; i < words.Length; i++)
{
words[i] = ReverseString(words[i]);
}
msg = string.Join(" ", words);
Console.Write(msg);
Console.ReadKey();
} private static string ReverseString(string msg)
{
Char[] ch = msg.ToCharArray();
for (int i = ; i < ch.Length / ; i++)
{
char temp = ch[i];
ch[i] = ch[ch.Length - - i];
ch[ch.Length - - i] = temp;
}
return new string(ch);
}
}
分割年月日
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入日期:");
string date = Console.ReadLine();
string[] parts = date.Split('年', '月', '日');
Console.WriteLine("年:{0}", parts[]);
Console.WriteLine("月:{0}", parts[]);
Console.WriteLine("日:{0}", parts[]);
Console.ReadKey();
}
}
把csv文件中的联系人姓名和电话号码显示出来
class Program
{
static void Main(string[] args)
{
string[] lines = File.ReadAllLines("info.csv",Encoding.Default);
//循环遍历每一行
for (int i = ; i < lines.Length; i++)
{
string[] parts= lines[i].Replace("\"","").Split(',');
Console.WriteLine("姓名:{0};电话{1}", parts[] + parts[], parts[]);
}
Console.ReadKey();
}
}
123-456---7---89-----123----2把类似的字符串中重复符号”-”去掉,既得到123-456-7-89-123-2. split()、
class Program
{
static void Main(string[] args)
{
string msg = "123-456---7---89-----123----2";
string[] parts = msg.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
string str = string.Join("-", parts);
Console.WriteLine(str);
Console.ReadLine();
}
}
从文件路径中提取出文件名(包含后缀) 。比如从c:\a\b.txt中提取出b.txt这个文件名出来。
class Program
{
static void Main(string[] args)
{
string path = @"c:\a\b.txt";
// 查找最后一个\出现的索引位置
int index = path.LastIndexOf('\\');
string filename = path.Substring(index + );
Console.WriteLine(filename);
Console.ReadKey();
}
}
192.168.10.5[port=21,type=ftp] 192.168.10.5[port=21]
class Program
{
static void Main(string[] args)
{
string msg = "192.168.10.5[port=21,type=ftp]";
string[] parts = msg.Split(new string[] { "[port=", ",type=", "]" }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("IP:{0}\r\n Port:{1} \r\n service:{2}", parts[], parts[], parts.Length == ? parts[] : "http");
Console.ReadKey();
}
}
求员工工资文件中,员工的最高工资、最低工资、平均工资
class Program
{
static void Main(string[] args)
{
string[] lines = File.ReadAllLines("salary.txt", Encoding.Default);
string[] parts = lines[].Split('='); //假设第一个人的工资是最高工资
string maxName = parts[];
int maxSalary = Convert.ToInt32(parts[]); //假设第一个人的工资是最低工资
string minName = parts[];
int minSalary = Convert.ToInt32(parts[]); int sum = minSalary;//用来存储总工资。 int count = ; //循环遍历其他人的工资进行比对,计算最高工资与最低工资
for (int i = ; i < lines.Length; i++)
{
//跳过空行
if (lines[i].Length != )
{
count++;
string[] lineParts = lines[i].Split('=');
int salary = Convert.ToInt32(lineParts[]); //进行最高工资的比较
if (salary > maxSalary)
{
maxSalary = salary;
maxName = lineParts[];
} //进行最低工资的比较
if (salary < minSalary)
{
minSalary = salary;
minName = lineParts[];
}
sum += salary;
} } Console.WriteLine("最高工资:{0} 最低工资:{1}", maxSalary, minSalary);
Console.WriteLine("平均工资:{0}", sum * 1.0 / count);
Console.ReadKey();
}
}
class Program
{
static void Main(string[] args)
{
string msg = "北京传智播客软件培训,传智播客.net培训,传智播客Java培训。传智播客官网:http://www.itcast.cn。北京传智播客欢迎您。";
string defaultWord = "传智播客";
int count = ;
int index = ; while ((index = msg.IndexOf(defaultWord, index)) != -)
{
count++;
index = index + defaultWord.Length;
}
Console.WriteLine("次数是:{0}", count);
Console.ReadKey();
}
}
面向对象计算器-抽象类版本
抽象计算器类
/// <summary>
/// 计算器的一个父类
/// </summary>
public abstract class JiSuanQi // 这个类必须定义为抽象类 前面加abstract
{
public JiSuanQi(int n1, int n2)
{
this.Number1 = n1;
this.Number2 = n2;
}
public int Number1
{
get;
set;
} public int Number2
{
get;
set;
} public abstract double JiSuan();
}
加法类:
/// <summary>
/// 计算加法的类
/// </summary>
public class Add : JiSuanQi
{
public Add(int n1, int n2)
: base(n1, n2)
{
this.Number1 = n1;
this.Number2 = n2;
}
public override double JiSuan()
{
return this.Number1 + Number2;
}
}
减法类:
/// <summary>
/// 计算减法的类
/// </summary>
public class Sub : JiSuanQi
{
public Sub(int n1, int n2)
: base(n1, n2)
{
this.Number1 = n1;
this.Number2 = n2;
}
public override double JiSuan()
{
return this.Number1 - Number2;
}
}
乘法类:
/// <summary>
/// 计算乘法的类
/// </summary>
public class Mult : JiSuanQi
{
public Mult(int n1, int n2)
: base(n1, n2)
{
this.Number1 = n1;
this.Number2 = n2;
}
public override double JiSuan()
{
return this.Number1 * Number2;
}
}
除法类
/// <summary>
/// 计算除法的类
/// </summary>
public class Div : JiSuanQi
{
public Div(int n1, int n2)
: base(n1, n2)
{
this.Number1 = n1;
this.Number2 = n2;
}
public override double JiSuan()
{
return this.Number1 / Number2;
}
}
主程序
class Program
{
static void Main(string[] args)
{
while (true)
{
JiSuanQi jsq = null;
Console.WriteLine("number1 :");
int n1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("操作符");
string czf = Console.ReadLine();
Console.WriteLine("number2 :");
int n2 = Convert.ToInt32(Console.ReadLine());
switch (czf)
{
case "+":
jsq = new Add(n1, n2);
break; case "-":
jsq = new Sub(n1, n2);
break; case "*":
jsq = new Mult(n1, n2);
break; case "/":
jsq = new Div(n1, n2);
break; default:
break;
}
if (jsq != null)
{
double result=jsq.JiSuan();
Console.WriteLine("结果:{0}",result);
}
}
}
}
提取方法:
class Program
{
static void Main(string[] args)
{
while (true)
{
JiSuanQi jsq = null;
Console.WriteLine("number1 :");
int n1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("操作符");
string czf = Console.ReadLine();
Console.WriteLine("number2 :");
int n2 = Convert.ToInt32(Console.ReadLine());
jsq = GetJiSuan(n1, czf, n2);
if (jsq != null)
{
double result=jsq.JiSuan();
Console.WriteLine("结果:{0}",result);
}
}
} //简单工厂设计模式
private static JiSuanQi GetJiSuan(int n1, string czf, int n2)
{
JiSuanQi jsq=null;
switch (czf)
{
case "+":
jsq = new Add(n1, n2);
break; case "-":
jsq = new Sub(n1, n2);
break; case "*":
jsq = new Mult(n1, n2);
break; case "/":
jsq = new Div(n1, n2);
break; default:
break;
}
return jsq;
}
}
值类型与引用类型:
class Program
{
static void Main(string[] args)
{
//// 值类型, 栈
////int short byte char bool double float struct enum decimal ////引用类型 string 数组 类 接口 委托
////堆
//string s = "a";
//s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; ////值类型
//int n = 100;
//int m = n;
//m = m + 1;
//Console.WriteLine(n); // 100
//Console.ReadKey(); //引用类型
Person p = new Person();
p.Age = ;
Person p1 = p;
p1.Age = ;
Console.WriteLine(p.Age); //
Console.ReadKey();
}
} public class Person
{
public int Age
{
get;
set;
}
}
练习1
class Program
{
static void Main(string[] args)
{
//int n = 10;
//M1(n);
//Console.WriteLine(n);//10
//Console.ReadKey(); //Person p = new Person();
//p.Age = 100;
//M2(p);
//Console.WriteLine(p.Age);//101
//Console.ReadKey(); //Person p = new Person();
//p.Age = 100;
//M3(p);
//Console.WriteLine(p.Age);//1000
//Console.ReadKey(); //Person p = new Person();
//p.Age = 100;
//M4(p);
//Console.WriteLine(p.Age);//100
//Console.ReadKey(); //string name = "科比";
//M5(name);
//Console.WriteLine(name);//科比
//Console.ReadKey(); //int[] arrInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
//M6(arrInt);
//for (int i = 0; i < arrInt.Length; i++)
//{
// Console.WriteLine(arrInt[i]); // 1, 2, 3, 4, 5, 6, 7, 8
//}
//Console.ReadKey(); //int[] arrInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
//M7(arrInt);
//for (int i = 0; i < arrInt.Length; i++)
//{
// Console.WriteLine(arrInt[i]); //100,100,100,100,100,100,100,100
//}
//Console.ReadKey();
} private static void M7(int[] arrInt)
{
for (int i = ; i < arrInt.Length; i++)
{
arrInt[i] = ;
}
}
private static void M6(int[] arrInt)
{
arrInt = new int[arrInt.Length];
for (int i = ; i < arrInt.Length; i++)
{
arrInt[i] = arrInt[i] * ;
}
} private static void M5(string name1)
{
name1 = "乔丹";
} private static void M4(Person p1)
{
p1 = new Person();
p1.Age++;
} private static void M3(Person p1)
{
p1.Age = ;
p1 = new Person();
p1.Age = ;
}
private static void M2(Person p1)
{
p1.Age++;
}
private static void M1(int m)
{
m++;
}
} public class Person
{
public int Age
{
get;
set;
}
}
练习2
class Program
{
static void Main(string[] args)
{
//int n = 10;
//M1(ref n);
//Console.WriteLine(n);//11
//Console.ReadKey(); //Person p = new Person();
//p.Age = 100;
//M2(ref p);
//Console.WriteLine(p.Age);//101
//Console.ReadKey(); //Person p = new Person();
//p.Age = 100;
//M3(ref p);
//Console.WriteLine(p.Age);//
//Console.ReadKey(); //Person p = new Person();
//p.Age = 100;
//M4(ref p);
//Console.WriteLine(p.Age);//1
//Console.ReadKey(); //string name = "科比";
//M5(ref name);
//Console.WriteLine(name);//乔丹
//Console.ReadKey(); //int[] arrInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
//M6(ref arrInt);
//for (int i = 0; i < arrInt.Length; i++)
//{
// Console.WriteLine(arrInt[i]); //0,0,0,0,0,0,0,0
//}
//Console.ReadKey(); //int[] arrInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
//M7(ref arrInt);
//for (int i = 0; i < arrInt.Length; i++)
//{
// Console.WriteLine(arrInt[i]); //100,100,100,100,100,100,100,100
//}
//Console.ReadKey();
}
private static void M7(ref int[] arrInt)
{
for (int i = ; i < arrInt.Length; i++)
{
arrInt[i] = ;
}
}
private static void M6(ref int[] arrInt)
{
arrInt = new int[arrInt.Length];
for (int i = ; i < arrInt.Length; i++)
{
arrInt[i] = arrInt[i] * ;
}
}
private static void M5(ref string name2)
{
name2 = "乔丹";
}
private static void M4(ref Person p1)
{
p1 = new Person();
p1.Age++;
}
private static void M3(ref Person p1)
{
p1.Age = ;
p1 = new Person();
p1.Age = ;
}
private static void M2(ref Person p1)
{
p1.Age++;
}
//值传递,传递的是栈中的内容,(对于值类型,栈中的内容就是对应的数据。对于引用类型栈中内容就是对象的地址)
//引用传递,传递的是栈本身的地址,多个变量名实际上指向的是同一个栈变量。
//引用传递必须使用ref关键字修饰。在方法调用的时候传递参数的时候也必须加ref 关键字
private static void M1(ref int m)
{
m++;
}
}
public class Person
{
public int Age
{
get;
set;
}
}
04---Net基础加强的更多相关文章
- [分享]Ubuntu12.04安装基础教程(图文)
[分享]Ubuntu12.04安装基础教程(图文) 原文地址: http://teliute.org/linux/Ubsetup/lesson21/lesson21.html 1.进入 live cd ...
- [Java 教程 04] Java基础语法
在上一篇文章中我们已经运行了个简单的java程序,但是没有给大家讲解代码部分的内容与含义.学习,我们要做到知其然而知其所以然,所以本篇文章我们就来讲解java程序的基本语法,学完这篇文章你再回头看上篇 ...
- DLL技术应用04 - 零基础入门学习Delphi47
DLL技术应用04 让编程改变世界 Change the world by program 利用DLL实现窗体重用 利用 Delphi 的 DLL 功能,不但能够实现过程和函数重用,而且还可以实现窗体 ...
- 04: linux基础总结
目录: 1.1 Red Hat Linux 安装及服务控制 1.2 目录和文件管理 1.3 安装及管理程序 1.4 账号和权限管理 1.5 磁盘和文件管理 1.6 进程和计划任务管理 1.7 Linu ...
- C#语言-04.OOP基础
a. OOP:面对对象思想 i. 类:是一种功能强大的数据类型,而且是面向对象的基础 . 语法:访问修饰符 class 类名{ //类的主体 } . 成员变量:不以“函数”形式体现 a. 常量:代表与 ...
- 04 mysql 基础三 (进阶)
mysql 基础三 阶段一 mysql 单表查询 1.查询所有记录 select * from department; select * from student; select * from ...
- 04.Django基础四之模板系统
一 语法 模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二 变量 在Django的模板语言中按此语法使用:{ ...
- 运维 04 Shell基础命令(二)
Shell基础命令(二) 查看Linux的发行版 cat /etc/redhat-release cat /etc/os-release 查看系统用户的id信息 id 用户名 id root id ...
- 04.Java基础语法
一.Java源程序结构与编程规范 一个完整的Java源程序应该包含下列部分 package语句,至多一句,必须放在源程序第一句 import语句,没有或者若干句,必须放在所有类定义前 public c ...
- Ubuntu 16.04 系统基础开发环境搭建
1.安装 Git sudo apt-get update sudo apt-get install git Do you want to continue? [Y/n] Y git --version ...
随机推荐
- nodejs express测试
1.页面请求 app.get('/list_user', function (req, res) { console.log("/list_user GET 请求"); //res ...
- Android笔记:string-array数据
把相应的数据放到values文件夹的arrays.xml文件里 String数组 <?xml version="1.0" encoding="utf-8" ...
- NSPredicate 根据谓语动词 进行 模糊查询
/** * 模糊查询 */ NSString *filterString = textField.text; NSPredicate *predicate = [NSPredicate predic ...
- sqlserver 视图能否有变量
不能,sqlserver 视图一般不能有变量,也不能带存储过程
- urlencode和rawurlencode的区别
摘自http://blog.csdn.net/doggie1024/article/details/5698615 urlencode:返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将 ...
- imx6 RGB LCD
imx6dl需要支持lcd接口的屏,imx6dl的datasheet并没有明确的说明lcd相关的配置,只在Display Content Integrity Checker (DCIC)一章中介绍.本 ...
- logback配置详解(二)
<appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appende ...
- Object类型(对象)
ECMAscript中的对象其实就是一组数据和功能集合.这里简单谈谈对象,复杂以后补充. 1 如何创建对象 简单创建: var box = {}; alert(box); //[object obje ...
- SSH原理与运用(一)和(二):远程登录 RSA算法原理(一)和(二)
SSH原理与运用(一)和(二):远程登录 RSA算法原理(一)和(二) http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html ht ...
- 使用APICloud平台一周时间开发出休闲娱乐内容类APP
这款app是我花一周左右时间做出来的,一款阅读笑话,段子,糗事,脑筋急转弯,神回复,语录,谜语等的休闲娱乐app,用户除了可以浏览他人发布的内容外,自己也可以发布相关内容,和其他人一同分享有趣的内容, ...