当前位置: 代码迷 >> 综合 >> 【C#】面向过程(21)——String类常用函数,字符串的分割,字符串函数详解
  详细解决方案

【C#】面向过程(21)——String类常用函数,字符串的分割,字符串函数详解

热度:44   发布时间:2023-10-01 21:05:33.0

1、ToLower():得到字符串的小写形式。

2、注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。s.ToLower()与s=s.ToLower()

3、ToUpper():得到字符串的大写形式; Trim()去掉字符串两端的空白(不会去掉中间的)。

4、s1.Equals(s2, StringComparison.OrdinalIgnoreCase),忽略大小写的比较。两个字符串进行比区分大小写的比较。推荐这种用法。

例如:s1. Equals(s2,StringComparison.OrdinalIgnoreCase)  //忽略大小写的比较s1和s2,返回值是一个bool类型,相同时返回true,不相同时返回false 。

 

5、string.Format()  //用占位符格式生成新的字符串

例1:string  s=String. Format(“我叫{0},我{1}岁”,”陆荣锦”,18);

例2:string s2 = string.Format("{0}年{1}月{2}日", year, month, day);

 

6、用Reflector看WriteLine和string.Format的关系。看别人程序的实现、看微软的实现,偷窥的快感!

7、string s1 = string.Join("|", values); //第一个参数是string类型分隔符,values是字符//串数组

二、字符串的分割

8、string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;

例如:string  line=Console.ReadLine();

String[]  strs=line.Split(‘,’,’|’);  //是可变参数,所以可以有多个分割符。即本例中遇到逗号或者|时,都分割。

foreach(string  str  in  strs)

{

           Console.WriteLine(str);

}

 

9、string[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分割符分割为字符串数组( options 取RemoveEmptyEntries的时候移除结果中的空白字符串);

10、string[] Split(string[] separator, StringSplitOptions options)将字符串按照指定的string分割符分割为字符串数组。

11、例子1:从日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日。

12、例子2:从一个记录了学生成绩的文本文档,每个学生成绩是一行,每行是用|分割的数据,用|分割的域分别是姓名、年龄、成绩,写程序取出成绩最高学生的姓名和成绩。参考:使用:

string[] lines = System.IO.File.ReadAllLines(@"c:\root.ini", Encoding.Default);  //从文本文件读取数据,返回值为string数组,每个元素是一行。

三、字符串函数详解

13、字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。例子:名字替换。

用处:比如在很长的文章或者字符串中,把所有“北京”改为“广州”。

14、取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串;

15、string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。

案例:截取字符串前5个,string s2 = s1.Substring(0, Math.Min(s1.Length, 5));  //取字符串的长度和5中的最小值来截取。谁小取谁

16、bool Contains(string value)判断字符串中是否含有子串value

17、bool StartsWith(string value)判断字符串是否以子串value开始;

18、bool EndsWith (string value)判断字符串是否以子串value结束;

19、int IndexOf(string value):取子串value第一次出现的位置。用来找出一个字符串在另一个字符串中出现的位置。返回值是一个int类型,如果不存在则返回-1。

20、StringSplitOptions.RemoveEmptyEntries  移除空字符串。

因为重载中StringSplitOptions放到最后,所以不能用分割符必须用char[]传。不能用可变参数。

21、我的美容心得      罗玉凤

我的名师之路  陆荣锦

转发关于《建设有中国特色的社会主义国家的若干提案》的提案的提案 胡某某

转换为:

我的美容心得|罗玉凤

我的名师之路|陆荣锦

转发关于《建设有中国特色的社会主义国家...|胡某某

 

SubString实现文章超长截取,会遇到不足的问题

ini文件的=前后可能会有空格

代码:

/*string s = Console.ReadLine();for (int i = s.Length-1; i >= 0; i--){Console.WriteLine("{0}",s[i]);}*//*string s = Console.ReadLine();string[] words = s.Split(' ');for (int i = words.Length - 1; i >= 0; i--){string word = words[i];Console.WriteLine("{0}",word);}*//*string s = Console.ReadLine();string[] words = s.Split(' ');foreach (string word in words){string word1 = "\"" + word + "\"";Console.WriteLine("{0}",word1);}*//*string s = "如鹏网& _是一个计算%$机学习的网*^%站。 tom 你&好";string s1 = s.Replace("&","").Replace("_","").Replace("%", "").Replace("$", "").Replace("*", "").Replace("^", "");string[] words = s1.Split(' ');foreach (string word in words){Console.WriteLine("{0}", word);}*/string email = "abc@163.com";int atIndex = email.IndexOf("@");string username = email.Substring(0, atIndex);string domainname = email.Substring(atIndex + 1);Console.WriteLine("用户名是{0},域名:{1}",username,domainname);Console.ReadKey();
  相关解决方案