深入C# String类
C#中的String类
他是专门处理字符串的(String),他在System的命名空间下,在C#中我们使用的是string
小写的string只是大写的String的一个别名(外号)使用大写和小写都是一样的
Using == import
常用的字符串处理法
Java中常用的字符串处理方法?
1) IndexOf:字符串的检索
a) IndexOf(String s):重头开始检索
b) IndexOf(String s,startString s):从startString开始检索
2) 获取长度:.length()
3) 判断.equals(参数)
4) 得到字符串的子字符
subString(参数)
subString(参数1,参数2)
https://www.cnblogs.com/ABook/p/5527341.html
C#提供的字符串比较的方法
1) IndexOf:查找某个字符在字符串当中的位置
2) subString:从字符串中截取子字符
3) ToLower():转换成小写
4) ToUpper():大写
5) Time():去空格
6) Equals():比较字符串值
If(name == “”) 地址
If(name.Equals(String.Empty))值
“”和Empty的区别?
If(name == “a”) 分配一个长度为空的存储空间String
If(name == null)空 给你一个空间,但大小不规定
If(name.Equals(String.Empty)) 不会分配存储空间
判断空字符串的三种写法?这三个的性能比较?
Name.Length ==0 2
Name == String.Empty 1
Name == “” 3
7) join():链接字符串
8) split():分割
获取邮箱用户名
需求:获取邮箱的用户名
兼用各种格式yes(YES)
循环执行
public void GetUserName()
{
string code;//用户选择
do{
this.PickNameFoemEmail();
Console.WriteLine("是否继续?yes/no");
code = Console.ReadLine();
code = code.Trim().ToLower();
}while(code.Equals("yes"));
}
public void PickNameFoemEmail()
{
string emsil;// 获取邮箱
string name;//获取用户名
Console.WriteLine("请输入邮箱:");
emsil = Console.ReadLine();
Console.WriteLine("你的邮箱是{0}:",emsil);
// 提取
int posion = emsil.IndexOf("@");
if (posion > 0)
{
name = emsil.Substring(0, posion);
Console.WriteLine("你的邮箱地址是:{0}", name);
}
else
{
Console.WriteLine("你的邮箱格式错误");
}
}
Class1 c = new Class1();
c.GetUserName();
Console.ReadKey();
连接分割字符串
Join split
// 输入的字符串
string inputString;
// 分割后的字符串数组
string[] splitString;
// 连接后的
string joinString;
Console.WriteLine("请输入字符串,用空分开:");
inputString = Console.ReadLine();
splitString = inputString.Split(' ');
Console.WriteLine(@" 分割后的:");
foreach (var item in splitString)
{
Console.WriteLine(item);
}
joinString = string.Join("---",splitString);
Console.WriteLine(" 连接后的字符串:{0}",joinString);
@” 转义符”:忽略掉
Format格式化(不是清除的意思)
String name = “Tom”;
Console.WritrLine(“我的名字:{0},我的年龄{1}”,name,22);
{x}占位符的方式去输出
string name;
string birthday;
int height;
string bloodType;
string planet;
string loveFood;
string record;
Console.WriteLine("欢迎来到“C#”的世界!");
Console.WriteLine("请输入你的个人信息,我将为你建立个人档案:");
Console.Write("姓名:");
name = Console.ReadLine();
Console.Write("出生年月:(*年*月*日):");
birthday = Console.ReadLine();
Console.Write("身高(cm):");
height = int.Parse(Console.ReadLine());
Console.Write("星座:");
planet = Console.ReadLine();
Console.Write("血型:");
bloodType = Console.ReadLine();
Console.Write("喜欢的食物:");
loveFood = Console.ReadLine();
record = string.Format("姓名:{0} 出生年月:{1} 身高:{2} 星座:{3} 血型:{4} 喜欢的食物:{5}",name,birthday,height,bloodType,planet,loveFood);
Console.WriteLine(" 这是你的个人档案:");
Console.WriteLine(record);
Console.ReadKey();
Grammar:String myString = string.Format(“格式化字符串{x}”,参数列表)
2 * 3 = 6
String myString = string.Format(“{0}乘以{1}等于{2}”,2,3 ,2 * 3);
如输出货币
语法:
格式字符串包括:固定文本和格式项
格式项
Console.WriteLine("{0}",50);
Console.WriteLine(String.Format("{0,-8:F2}",50));
Console.WriteLine(String.Format("{0,8:C2}", 50));
Format()方法的格式化字符串中各种格式化定义符和示例
1) C:货币格式
2) D十进制格式
3) F小数点后固定位数
4) N用逗号隔开的数字
5) P百分比计数法
6) X十六进制格式
Console.WriteLine("{0}",String.Format("{0:C3}",3000));
Console.WriteLine("{0}",String.Format("{0:D3}",2000));
Console.WriteLine("{0}", String.Format("{0:F3}", 2000));
Console.WriteLine("{0}", String.Format("{0:N}", 230000));
Console.WriteLine("{0}", String.Format("{0:P3}", 0.921867357621));
Console.WriteLine("{0}", String.Format("{0:X000}", 12));
类型转换
为什么需要类型转换?
不转就报错
简单的类型转换
Int 类型可以隐式的转换为float或double类型,float可以隐式的转换为double
double a = (double)float.Parse(Console.ReadLine());
double b = 12.0f;
显示转换
double num = 30.7;
int num1 = 10;
int sum;
sum = (int)num + num1;
Console.WriteLine(sum);
整数类型与字符串之间的转换
1,2,3,4,5,6,n
说的话,字符
隐式类型和显示类型一般都是值类型之间的转换,并不适用于值类型和字符串类型之间的转换
字符串转换为值类型?
int.Parse(Console.ReadLine());
要把字符串转换为值类型的时候,可以调用不同的数值类型的Parse()方法
Parse():解析
字符串转换为整形?
int.Parse(string);
float.Parse(string);
double.Parse(string);
注意:要转换的字符串必须是数字类型。
你能把20转成整形,你能把name转成
值类型转换为字符串类型?
同java一样ToString();
int age = 20;
string age1 = age.ToString();
Console.WriteLine(age1);
使用Convert类进行转换?
Convert.ToInt32();转换为int类型
Convert.ToSingle();单精度浮点
Convert.ToDouble();双精度
Convert.ToString();字符串
double myDouble = 20.66;
int myInt;
float myFloat;
string myString;
Console.WriteLine("转换前的double值为:{0}",myDouble);
myInt = Convert.ToInt32(myDouble);
myFloat = Convert.ToSingle(myDouble);
myString = Convert.ToString(myDouble);
Console.WriteLine("转换后:");
Console.WriteLine("int float string");
Console.WriteLine("{0} {1} {2}",myInt,myFloat,myString)
做个比较:
隐式类型转换:常用于数值之间的转换,取值范围小的数值类型转换为取值范围大的类型
显示:将大的转换为小的
Convert类:任何基本类型见得转换
注:只用Parse和Convert进行转换不是,如果转换没有意义,则可能会出错
double num = 10.11;
int sum = int.Parse(num);
Parse()方法不接受string以外的任何参数
MyBank项目总结
User类
账户类
成员变量
用户名
密码
身份证
账号
账号余额
取款方法
存款方法
Bank类
成员变量(User User数组 提示信息)
初始化用户信息
显示所有账户的所有信息
显示菜单
开户
取款
存款
转账
显示余额
修改密码
判断账户是否存在
测试类
调用方法
判断空字符串的三种写法?这三个的性能比较?
Name.Length ==0
Name == String.Empty
Name == “”
建立个文件(aspx页面)
Public void 方法名(Page-Load)(…..){
String a = “”;
For(int I = 0;i<1000000i++){
If(a.Length == 0){}
}
}
方法 结果
If(a==””) 98
If(a==String.Empty) 105
If(a.Length == 0) 168