【C#】面向过程(20)——字符串的处理

1、C#中单个字符用单引号包含就是char类型,(‘a’),单引号中放且只能放一个字符。ASCII码

2、单个字符也可以表示为字符串,还可以有长度为0的字符串。null和""的区别,String.IsNullOrEmpty

3、使用s.Length属性来获得字符串中的字符个数。

4、string可以看做是char的只读数组。char c = s[1];。例子:遍历输出string中的每个元素。

5、C#中字符串有一个重要的特性:不可变性。字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。

6、如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。例子:将字符串中的A替换为a。

7、字符串是不可变的,所以要先生成一个char[],再对char[]进行修改。再根据char[]生成新的字符串,但是原先的字符串没有改变(他就在那里)。可以根据人生成模型,也可以根据模型生成人,但是人不能修改。这样根据李咏生成模型,然后把脸搞短,再生成李咏2,李咏2和李咏是两个对象。

            s=new string(s);//相当于李咏2把李咏杀死替换了李咏,好像李咏脸变短了,但是是两个实例

            string s="abc";//是声明一个变量s,把s指向"abc"这个字符串。

            string s1 = "123456";
            char[] chars1 = s1.ToCharArray();//是根据s1复制一份char[]
            chars1[0] = 'w';//不会影响s1
            string s2 = new string(chars1);//根据chars1产生一份新的string
            Console.WriteLine(s2);
            Console.WriteLine(s1);
            chars1[0] = 'c';//并不会影响s2
            Console.WriteLine(s2);

面试练习题:字符串转换为大写、小写、翻转,inttostring 。

8、是一个拷贝的过程:

string s1 = "123456";
            char[] chars1 = s1.ToCharArray();//是根据s1复制一份char[]
            chars1[0] = 'w';//不会影响s1
            string s2 = new string(chars1);//根据chars1产生一份新的string
            Console.WriteLine(s2);
            Console.WriteLine(s1);
            chars1[0] = 'c';//并不会影响s2
            Console.WriteLine(s2);

9、练习:c#时间格式转换汉字大写 比如: "2009年9月5日" 转换成 "二零零九年九月五日",输入字符串,返回字符串。写成一个函数。string ToCH(string s) 。

string[] c = new string[]{ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖","年","月","日" };

            try
            {
                string input = "2009年9月5日";
                StringBuilder str = new StringBuilder();
                for (int count = 0; count < input.Length; count++)
                {
                    string temp = input.Substring(count,1);
                    switch (temp)
                    {
                        case "1": str.Append(c[1]); break;
                        case "2": str.Append(c[2]); break;
                        case "3": str.Append(c[3]); break;
                        case "4": str.Append(c[4]); break;
                        case "5": str.Append(c[5]); break;
                        case "6": str.Append(c[6]); break;
                        case "7": str.Append(c[7]); break;
                        case "8": str.Append(c[8]); break;
                        case "9": str.Append(c[9]); break;
                        case "0": str.Append(c[0]); break;
                        case "年": str.Append(c[10]); break;
                        case "月": str.Append(c[11]); break;
                        case "日": str.Append(c[12]); break;
                        default: break;
                    }
                }
                this.button1.Text = str.ToString();
            }
            catch (Exception ex)
            {
                throw new Exception("已经过测试");
            }

10、string  s=null;  //空的,没有字符串

string  s=””;  //有字符串,只是这个字符串是空的,即长度为0

 

11、string  s=”abdngf”;

if(s==null || s==”” || s==string.Empty)  //判断s是否为空,后两个是一样的。

if(string.IsNullOrEmpty(s))  //等价于上一行

 

12、读取出字符串里的某个字符:

string  s=”abcdsfkho”;

int  i=s.Length;  //获取字符串s的长度

char  c=s[3];  //获取字符串s的第3个字符,即d

 

13、数组声明以后,就不能再改变其长度了,但是可以改变具体元素的内容。

字符串声明以后,就不能改变其长度和内容了,想要改变内容,只能重新赋值,因为字符串在C#中是只读。

string  s=”abcdsfhkog”;

char[]  chars=s.ToCharArray();  //将字符串s转换为char类型的数组

chars[2]=’w’;  //将第二个元素改为‘w’,即,将‘c’改为‘w’

string  s1=new  string(chars);  //将chars数组转换为字符串并赋值给s1,此时s1的值为“abwdsfhkog”

常见疑问

14、谁说字符串不可变?string s = "abc";s="123",s这不是变了吗?

15、要区分变量名和变量指向的值的区别。程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,但是字符串本身没有变化。字符串不可变性指的是内存中的字符串不可变,而不是变量不变

16、string s10 = s1;//s10指向s1指向的字符串,而不是s10指向s1,哪怕s1以后指向了其他内存,那么s10还是指向"hello"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值