【C#】字符串string

字符串本质上是char数组。

字符串每次重新赋值或者拼接时会分配新的内存。

如果字符串经常改变会非常浪费空间。

  1. 字符串指定位置获取
string str = "溜溜是六六";
Console.WriteLine(str[2]);           
char[] chars = str.ToCharArray();
Console.WriteLine(chars[1]);
  1. 字符串拼接
string str0 = string.Format("{0}{1}", 1124, 324);
Console.WriteLine(str0);
  1. 正向查找字符串
int index = str.IndexOf('是'); 
Console.WriteLine(index);
  1. 反向查找字符串
index = str.LastIndexOf('六');
Console.WriteLine(index);
  1. 移除指定位置后的字符
str0 = str.Remove(2);
Console.WriteLine(str0);
//参数1移除开始位置;参数2移除个数;
str0 = str.Remove(1,2);
Console.WriteLine(str0);
  1. 替换指定字符串
str0 = str.Replace('六', '6');
Console.WriteLine(str0);
str0 = str.Replace("六","6");
Console.WriteLine(str0);
  1. 大小写转换
str = "sgfsg erarg";
str0 = str.ToUpper();
Console.WriteLine(str0);
str0 = str0.ToLower();
Console.WriteLine(str0);
  1. 字符串截取,截取从指定位置开始之后的字符串
str0 = str.Substring(5);
Console.WriteLine(str0);
//参数1移除开始位置;参数2截取个数;
str0 = str.Substring(2,3);
Console.WriteLine(str0);
  1. 字符串切割

实际开发中,策划会使用配表的形式做一些功能。这时,需要用字符串切割的方法把数据截取出来。

str = "1,2,3,4,5,6,7,8,9";
string[] strs = str.Split(',');
for (int i = 0; i < strs.Length; i++)
{
    Console.WriteLine(strs[i]);
}

实例

namespace L23_面向对象相关_string
{

    internal class Program
    {
        static void Main(string[] args)
        {
            //练习题一
            //请写出string中提供的截取和替换对应的函数名
            //Substring Replace
            //练习题二
            //请将字符串1|2|3|4|5|6|7
            //变为     2|3|4|5|6|7|8
            //并输出
            //(使用字符串切割的方法)
            string s = "1|2|3|4|5|6|7";
            //用字符串增删的方法实现
            //s = s + "|8";
            //s = s.Substring(2);
            //Console.Write(s);

            //使用字符串切割的方法
            string[] ss = s.Split("|");
            int[] temp = new int[ss.Length];
            for (int i = 0; i < ss.Length; i++)
            {
                //将切割出来的字符串每个字符变成int类型进行算数+1
                temp[i] = int.Parse(ss[i]) + 1;
                //将算数运算完的数组重新改回字符串数组,然后按照规律加|
                ss[i] = Convert.ToString(temp[i]) + "|";
            }
            //将最后一个字符串数组的元素中多的|删掉
            ss[ss.Length - 1] = ss[ss.Length - 1].Remove(1);
            //打印
            for (int i = 0; i < ss.Length; i++)
            {
                Console.Write(ss[i]);
            }

            //练习题二:
            //String和string、Int32和int、Int16和short、Int64和long的区别是什么?
            //String:即System.String,调用静态方法时用String;
            //string:System.String的别名,定义变量时使用string。
            //int是System.Int32在C#语言中的特别名称,即别名,System.Int32是.Net Framework平台中统一的写法。
            //同理,Int16和short,Int64和long也是这样。

            //练习题三:
            string st = null;
            st = "123";
            string st2 = st;
            st2 = "321";
            st2 += "123";
            //请问,上面这段代码,分配了多少个新的堆内存?
            //三个。string类型的值一样时,CLR会到驻留池(Intern Pool)中去检查是否有值为相同的字符串,
            //如果已经存在就不重新分配堆空间,而是共同引用这个string;
            //但当string每进行一次改变时就会返回一个新的string对象。

            //练习题四:??
            //编写一个函数,将输入的字符串反转,不能中间使用中间商,你必须原地修改数组。交换过程中不使用额外空间,
            //比如输入{'h','e','l','l','o'}
            //输出{'o','l','l','e','h'}
            ;
            // Array.Reverse function
            //string ReverseB(string text)
            //{
            //    char[] charArray = text.ToCharArray();
            //    Array.Reverse(charArray);
            //    return new string(charArray);
            //}

            string Fun(string str00)
            {
                //str00.ToCharArray()将字符串转化成char数组
                //.Reverse<char>()将字符串数组顺序倒转
                //new string()将改变后的char数组重新变回字符串
                return new string (str00.ToCharArray().Reverse<char>().ToArray());
            }
            Console.WriteLine(Fun("hello"));
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值