day9
字符串
string 是引用类型但是非常特殊
字符串可以当做数组使用
string str =\"abcde\";Console.WriteLine(str[0]);//\'a\'
↑只能读不能写
字符串可以进行 + +=运算
string str =\"abc\";str += \"a\";
string.Compare//比较判断
string str = \"abcDef\";int n = string.Compare(str, \"AbcDef\");Console.WriteLine(n);
Contains//判断是否包含
bool a= str.Contains(\"bc\");Console.WriteLine(a);
//删除
str = \"abcde\";str = str.Remove(3,1);//索引号第三个开始,删一个Console.WriteLine(str);
//合并
str = String.Concat(\"sadiu\",\"wduhw\");Console.WriteLine(str);
//拷贝 要拷贝的字符串起始索引 目标数组 目标索引号 长度
str = \"abcde\";char[] cs = new char[10];str.CopyTo(1,cs,0,3);cs[1] = \'z\';Console.WriteLine(cs);
//查找字符串返回索引
str = \"abcdefg0\";n = str.IndexOf(\"bc\");Console.WriteLine(n);
//查找任意字符串返回索引 indexOfAny大括号内元素顺序没关系,索引到靠前的一个就结束
str = \"abvdef\";n = str.IndexOfAny(new char[] { \'b\',\'v\'});Console.WriteLine(n);str = \"abvdef\";n = str.IndexOfAny(new char[] { \'b\',\'v\'});Console.WriteLine(n);
//插入
str = \"abfeg\";str= str.Insert(1,\"0....0\");//插入到索引1的位置Console.WriteLine(str);
//合并字符串数组 字符串 分隔符 字符串
str = string.Join(\",\",new string[] { \"abc\",\"bcd\"+\"efg\"});Console.WriteLine(str);
//查找字符串,返回最后一次出现的位置索引
str = \"awudihfiejsadhi\";n = str.LastIndexOf(\"i\");Console.WriteLine(n);
//左侧填充空格 右对齐
str = \"abvde0\";str = str.PadLeft(10);Console.WriteLine(str);
//右侧填充空格,左对齐
str = str.PadRight(2);
//替换
str = \"abcdefg\";str = str.Replace(\"bc\", \"aa00\");//什么,替换成什么Console.WriteLine(str);
//拆分
str = \"abc,def,grk\";String[] strs = str.Split(\',\');Console.WriteLine(strs[1]);
//截取字符串
str = \"abcdef\";str = str.Substring(1, 3);Console.WriteLine(str);
//转换成小写-大小写不区分
str = \"YEYUshengfan\";str = str.ToLower();Console.WriteLine(str);
//转换成大写
str = str.ToUpper();Console.WriteLine(str);
//删除首尾空白
str = \" asfw \";str = str.Trim();Console.WriteLine(str);
//字符串修改 StringBuilder 类
StringBuilder sb = new StringBuilder(\"啊这 \");sb.Append(\"饿了.jpg \").Append(\"中午吃啥?\");//追加sb.Insert(3,\"000000000\");//插入sb.Remove(3, 9);//删除sb.Replace(\"饿了\",\"困了\");//修改Console.WriteLine(sb.ToString());//转换成普通字符串
//System.Format
string str1 =string.Format(\"{0:N1}\",56789);//result:56,789.0string str2 =string.Format(\"{0:N2}\",56789);//result:56,789.00string str3 =string.Format(\"{0:N3}\",56789);//result:56.789.000string str4 =string.Format(\"{0:F1}\",56789);//result:56789.0string str5 =string.Format(\"{0:F2}\",56789);//result:56789.00\"{0:c}\",0.2 //result ¥0.20→英文操作系统是$0.20\"{0:D3}\",23 //result 023\"{0:P}\",0.24583 //result 24.58% 默认保留两位小数\"{0:P1}\",0.24583//result 24.6% 四舍五入保留一位小数
方法重载
同一个类中方法同名参数不同 根据传入的参数判断是哪个方法
1.参数类型不同
2.参数个数不同
3.参数的类型和个数都不同
class Debug{public static void Log(string text){//静态方法可被类直接调用Console.WriteLine(text);Thread.Sleep(1000);}//颜色输出public static void Log(string text,ConsoleColor color,int time){//静态方法可被类直接调用//文本的颜色设定Console.ForegroundColor = color;//获取文本Console.WriteLine(text);//停顿时间Thread.Sleep(1000);//默认颜色设定是白色Console.ForegroundColor = ConsoleColor.White;}//输出public static void Log(string text,int time){//获取文本Console.WriteLine(text);//停顿时间Thread.Sleep(time);}}
方法的递归
我调我自己√
互相调用√
↑记得必须设置出口
典型例子:斐波那契数列
public static void test (int a,int b){int c = a + b;if (c<300){Console.Write(c+\",\");test(b, c);}}
↑这是300以内的
小练习
写一个递归方法,计算敌人满血66666每次被攻击39,几次攻击可以杀死敌人
public static int i=0;//在递归方法外设定一个i接收次数public static void Attack(int hp){if (hp>0){i++;Attack(hp-39);}else{Console.WriteLine(i);}}