六、C#入门—字符与字符串
六、c#字符与字符串
6.1.字符与转义字符
1)定义
char类结构表示unicode字符。可以用来定义单个中文字符
2)方法
char c1 = 'a'; char c2 = '0'; char c3 = 'a'; console.writeline(char.isletter(c1)); //判断是否是字母 console.writeline(char.isdigit(c2)); //判断是否是数字 console.writeline(char.isletterordigit(c1)); //判断是否是字母或数字 console.writeline(char.islower(c1)); //判断是否小写 console.writeline(char.isupper(c3)); //判断是否大写 console.writeline(char.ispunctuation(c1)); //判断是否是标点 console.writeline(char.isseparator(c1)); //判断是否是分隔符 console.writeline(char.iswhitespace(c1)); //判断是否是空格 console.writeline(char.tolower(c3)); //转换成小写 console.writeline(char.toupper(c1)); //转换成大写 console.readline();
3)转义字符
6.2.字符串
字符串是system.string类的一个引用类型,可以将string类型变量看成是char类型的只读数组
1)字符集和字符编码
ascii码、gb2312、unicode、utf-8等
ascii '0'=48 '65'=a 'a'=97
6.3.字符串操作
方法分为静态方法和非静态方法
静态:string.方法 非静态:str.方法
//6.3.字符串大小写转换 string name = "jack"; console.writeline(name.tolower());//转换成小写 console.writeline(name.toupper());//转换成大写 //6.4.字符串比较 string str1 = "hello"; string str2 = "hello"; console.writeline(str1 == str2); console.writeline(string.equals(str1, str2)); console.writeline(string.compare(str1, str2)); //>0:str1>str2 =0:str1=str2 <0:str1<str2 console.writeline(string.compare(str1, str2, true));//忽略大小写 console.writeline(str1.compareto(str2)); //>0:str1>str2 =0:str1=str2 <0:str1<str2 //小写不应该大于大写吗,有点奇怪!! //6.5.字符串格式化 string str3 = string.format("hello {0}," + "i am {1}.", "world", "hecarim"); console.writeline(str3); str3 = string.format("{0:d3}", 1); //填充成3位 -> 001 console.writeline(str3); str3 = string.format("{0:f3}", 1.2345);//保留三位小数 console.writeline(str3); //6.6.字符串截取 string str4 = "hecarim"; //字符串索引从0开始 console.writeline(str4.substring(2)); //第2个开始截取 -> carim console.writeline(str4.substring(2, 2)); //第2个开始截取,长度为2 -> ca //6.7.字符串分割 string str5 = "i-am-hecarim=18"; string[] splitstr = str5.split('-'); //以'-'分割字符串 foreach (string item in splitstr) console.write(item + "\t"); //splitstr = str5.split(new char[] { '-', '=' }); //以'-','='分割字符串 splitstr = str5.split("-=".tochararray()); //以'-','='分割字符串 foreach (string item in splitstr) console.write(item + "\t"); console.writeline(); //6.8.字符串合并 string str6 = "hello"; string str7 = "world"; console.writeline(str6 + str7); console.writeline(string.concat(str6, str7)); //合并str6 str7 console.writeline(string.concat(splitstr)); //合并splitstr中的所有string console.writeline(string.join("-", splitstr)); //以'-'合并splitstr中的所有string //6.9.字符串插入填充 string str8 = "hecarm"; console.writeline(str8.insert(5, "i")); //"i"插入到索引为5的位置 console.writeline(str8.padleft(10)); //左填充成长度为10,默认是空格 console.writeline(str8.padright(10, '*')); //右填充成长度为10,用'*'填充,默认是空格 //6.10.字符串删除 string str9 = "hecarimzzz"; console.writeline(str9.remove(7)); //移除索引为7之后的字符 console.writeline(str9.remove(7, 2)); //移除索引为7之后的2个字符 //6.11.字符串修剪 string str10 = " hecarim "; console.writeline(str10.trim() + "|"); //修剪前后空格 console.writeline(str10.trimstart() + "|"); //修剪前空格 console.writeline(str10.trimend() + "|"); //修剪后空格 string str11 = "&#&#hecarim*#$*$"; console.writeline(str11.trim('$', '&')); //修剪前后的'$','&' console.writeline(str11.trim("&#*$".tochararray())); //修剪前后的'$','&','*','#' //6.12.字符串复制 string str12 = "vincent"; console.writeline(string.copy(str12)); char[] str13 = new char[20]; str12.copyto(3, str13, 0, 4); //指定位置复制 console.writeline(str13); //6.13.字符串替换 string str14 = "hello"; console.writeline(str14.replace('h', 'h')); //将'h'替换成'h' //6.14.字符串查找 string str15 = "hello world"; console.writeline(str15.indexof("wor")); //返回"wor"第一次出现的索引 console.writeline(str15.lastindexof("wor")); //返回"wor"最后一次出现的索引
console.readkey();
6.15.类型转换
1)转换形式
隐式转换:是系统自发的,不需要我们进行干预,也不需要我们进行额外的编码
显示转换:强制转换
//类型转换 int num1 = 65; string str16 = "97"; console.writeline(checked((char)num1)); //强制转换,checked()检查变量是否溢出 console.writeline(convert.tostring(num1)); console.writeline(num1.tostring()); console.writeline(int.parse(str16));
2)区别
(int)强制转换
不进行四舍五入
convert.toint32()
可以将空值null转换成0
0-4:直接舍弃
5:返回一个临近的偶数
6-9:进位
int.parse()
不能将空值null转换成0
只能转string类
6.17.stringbuilder类
1)作用
在使用system.string类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
在需要重复使用的情况下,创建新的string对象相关的系统开销就可能非常高
2)使用
引入system.text的命名空间
通过new关键字初始化,eg:stringbuilder stbuilder = new stringbuilder("hecarim");
使用方法与string类相同
3)方法
append、appendline、appendformat ...