字符串的分割
我们经常会遇到字符串的分割的问题,在后面制作播放器的时候,可以用现在学习的方法来分割歌词。
下面我们来具体看下string[]Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组:
图一、字符串的分割
String[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分隔符分割为字符串数组(options去RemoveEmptyEntries的时候移除结果中的空白字符串);
图二、看看跟刚才有什么不一样的地方
图三、干掉空白项的
如果用户输入的是汉字,我们怎么把它提炼出来呢?
我们在学习的时候,重点研究string中的方法,因为在string中的方法还是比较全面的,这里详细的介绍里面的基础知识,供初学者参考,目的是为了让大家在后面少走弯路。
下面我们看字符串函数中的其它常用方法。
字符串替换: String Replace(string oldValue,string newValue)将字符串中的出现oldValue的地方替换为newValue.例子:名字替换。
图四、字符的替换
图五、字符串的替换
取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串;
图六、截取字符串
Substring();第一个重载 参数是int类型,给一个数字,就会从这个下标开始截取。截取到最后
Substring();第二个重载,两个参数都是int类型,第一个参数是从哪个下标开始截取,第二个参数截取几个字符串;
如果截取的个数超出字符串的长度会报异常
图七、判断字符串中是否含有这个字符串
Bool StartsWith(string value)判断字符串是否以子串value开始;
图八、判断字符串是不是以川川开始的
Bool EndsWith(string value)判断字符串是否以子串value结束;
图九、从后往前判断
和上面的那个方法正好相反,判断是不是以某个字符串结尾
Int IndexOf(string value):取子串value第一次出现的位置。
图十、查找字符串里面的e
一道面试题呦
stringBuilder(简称SB)和string的区别?
答:string在进行运算时(如赋值、拼接等)会产生一个新的实例,而StringBuilder则不会,所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用StringBuilder,不要使用String
如果要操作一个不断增长的字符串,尽量不用string类 改用StringBuilder类,两个类的工作原理不同 string类是一种传统的修改字符串的方法,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在NET框架下,这个操作实在是划不来,因为系统先是把对象,并读取内存中的数据付给该对象,这一来二去的,耗了不少时间。而使用System Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。
练习
1.接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。"abc"→"cba"---------之前学过
2.接收用户输入的一句英文,将其中的单词以反序输出。"hello c sharp"→"sharp c hello"-----------同上
如果我是你的领导现在让你们做上面的两个练习,看看你们能从容的通过简单的方法写出上面两个题的代码么?
着重看我下面的方法,题目:从Email中提取出用户名和域名:
abc@163.com。----------分割------------
图十一、IndexOf后面经常用到的方法
让用户输入一句话,找出所有e的位置
图十二、找出字符串里面所有的e
练习:文本文件中存储了多个文章标题、作者,标题和作者之间用若干空格(数量不定)隔开,每行一个,标题有的长有的短,输出到控制台的时候最多标题长度10,如果超过10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。
图十三、读文章内容作判断
图十四、读文章做判断最终完整演示