C# StringBuilder类和Regex类/正则表达式

一. StringBuilder

(1)StringBuilder类来自于System.Text命名空间的一个对象,在使用的时候先得对StringBuilder进行初始化,在初始化的时候可以指定初始字符串以及初始长度。
(2)创建StringBuilder类的新实例
通过用一个重载的构造函数方法初始化变量,可以创建 StringBuilder 类的新实例。

            StringBuilder str = new StringBuilder("hello");
            Console.WriteLine(str);

(3)设置容量和长度
虽然StringBuilder对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前StringBuilder对象容纳的字符串长度混淆在一起。例如,可以创建StringBuilder类的带有字符串“Hello”(长度为5)的一个新实例,同时可以指定该对象的最大容量为20。当修改StringBuilder时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定StringBuilder类的容量。以下代码示例指定可以将MyStringBuilder对象扩充到最大25个空白。

StringBuilder str = new StringBuilder("英莱特科技",20);

在这里插入图片描述
可以使用读/写Capacity属性来设置对象的最大长度。以下代码示例使用Capacity属性来定义对象的最大长度。

 StringBuilder str = new StringBuilder("英莱特科技");
            str.Capacity = 20;

1.StringBuilder常用的方法函数
(1)Append方法
可用来将文本或对象的字符串表示形式添加到由当前StringBuilder对象表示的字符串的结尾处。将根据需要自动分配空间。

StringBuilder str = new StringBuilder("英莱特科技");
            str.Capacity = 20;
            str.Append("有限公司");

(2)AppendFormat方法
将文本添加到StringBuilder的结尾处,而且实现了IFormattable接口,因此可接受格式化部分中描述的标准格式字符串。可以使用此方法来自定义变量的格式并将这些值追加到StringBuilder的后面。
(3)Insert方法
将字符串或对象添加到当前StringBuilder中的指定位置。

StringBuilder str = new StringBuilder("英莱特科技有限公司");
            str.Insert(3, "信息");
            Console.WriteLine(str);

(4)Remove方法
从当前StringBuilder中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。

  StringBuilder str = new StringBuilder("英莱特科技有限公司");
            str.Remove(5,4);
            Console.WriteLine(str);

(5)Replace方法
可以用另一个指定的字符来替换 StringBuilder 对象内的字符。

StringBuilder str = new StringBuilder("英莱特科技有限公司");
            str.Replace("英莱特","InLett");
            Console.WriteLine(str);

2.StringBuilder和String的区别
C#提供了别名string(s小写)来代表System.String类。如果在代码中使用String,必须在代码一开始添加using System; 这一行。使用内建的别名string则不需要添加using System;
string对象是不可变的
包括长度或者其中的任何字符都是不可以改变的。C#中不能使用new string()来构造一个string对象。
StringBuilder是可变的
它是专门用于对字符串和字符执行动态操作的类。StringBuilder在内部有一个足够长的字符数组用于存放字符串对象,当字符串长度没超过字符数组长度时,所有操作都是针对同一个字符数组。当长度超过时,StringBuilder将自动创建一个更长的数组,把原来的数据复制到新数组中。

二.Regex

Regex 类用于表示一个正则表达式。
在这里插入图片描述
字符串中的特殊功能

1.转义字符
在字符串中系统会默认识别字符串中""字符,遇到斜杠会将其与其后紧跟的字符组合当成转义字符处理,如果能够组成转义字符则按照转义字符的特殊作用实现,如果不能组成转义字符则直接报错
2.占位符
字符串中使用{index}承担一个位置的标识,在格式化的字符串中可以使用占位符,在字符之后去填充标识位置的内容

三.正则表达式

正则表达式 是一种匹配输入文本的模式。.Net 框架提供了允 许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符 和结构组成。
(1)正则表达式概述
正则表达式语言是一种专门用于字符串处理的语言。它包含两 个功能: 一组用于表示字符类型的转义代码 一个系统,在搜索操作中,它把子字符串和中间结果的各个部 分组合起来.
(2)正则表达式的作用
检索:通过正则表达式,从字符串中获取我们想要的部分
匹配:判断给定的字符串是否符合正则表达式的过滤逻辑
 可以认为正则表达式表述了一个字符串的书写规则
 判断用户输入的密码是否合法,判断用户输入的邮箱
(3)正则表达式的组成
正则表达式就是由普通字符以及特殊字符(称为元字符)组成 的文字模式。该模式描述在查找文字主体时待匹配的一个或多个 字符串。
(4)元字符
①特殊符号元字符
在这里插入图片描述
②定位元字符指定位置:
在这里插入图片描述
③基本元字符

在这里插入图片描述

** ④反义字符**
在这里插入图片描述
⑤重复描述字符
在这里插入图片描述
(5)基础字符:我们输入的任意字符.
注:正则表达式自身而言就是一种字符串,只不过这种字符串是用来指定验证规则.
正则表达式是针对字符串的每个字符独立进行验证的.
案例一:QQ号的正则表达式验证

//QQ号的规则:纯数字,至少5位,最多12位,第一位数必须不能为0
            string pattern = @"^[1-9]\d{4,11}$";
            while (true)
            {
                Console.WriteLine("请输入你的QQ号:");
                string qq = Console.ReadLine();
                if (Regex.IsMatch(qq, pattern))
                {
                    Console.WriteLine("输入的QQ正确");
                }
                else
                {
                    Console.WriteLine("输入的QQ错误");
                }
            }

案例二:邮箱的验证

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace 邮箱的验证
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                //现在控制台上写下输入你的邮箱账号
                Console.WriteLine("请输入你的邮箱账号:");
                //邮箱账号的正则表达式如下@"
                // string emailStr =@"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.a-zA-Z0-9_-)+$";//错误的写法"[]"写成了"()"
                    string emailStr = @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+[\.a-zA-Z0-9_-]+$";
                 string em = Console.ReadLine();
                if (Regex.IsMatch(em,emailStr))
                {
                     Console.WriteLine("输入的邮箱正确");
                 }
                else
                {
                     Console.WriteLine("输入的邮箱错误");
                }
            }
        }
    }
}

在这里插入图片描述          在这里插入图片描述

案例三:IP地址验证

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace IP地址验证2
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                //现在控制台输出"请输入IP地址"   并设置颜色
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("请输入IP地址");
                //然后我们在控制台输入IP地址
                string IP = Console.ReadLine();
                //IP地址的表示方法(1-223.0-255.0-255.0-255)"{n}"表示重复前面括号n次(包括前面的字符)  "?"表示可选可不选
                //"\b"表示的是匹配数字(0-9数字)"^"表示开头   "$"表示结尾
                string pattern = @"^(([1-9]\d?)|(1\d\d)|(2[0-1]\d)|(22[0-3]))(\.((1?\d?\d?)|(2[0-4]\d)|(25[0-5]))){3}$";
                //IsMatch()是正则表达式的一种方法
                if (Regex.IsMatch(IP, pattern))
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("输入IP地址正确");
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine("输入IP地址错误");
                }
            }
        }
    }
}

在这里插入图片描述        在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值