字符串和正则表达式(System.String类)

在C#string关键字实际上指向.NET基类System.String。System.String是一个功能非常强大且用途非常广泛的基类,但它不是.NET库中唯一与字符串相关的类。
主要内容:
创建字符串——如果多次修改一个字符串,例如,在显示字符串或将其传递给其他方法或应用程序前,创建一个较长的字符串,String类就会变得效率低下。对于这种情况,应使用另一个类System.Text.StringBuilder,因为它是专门为这种情况设计的。
格式化表达式——格式化表达式将用于后面几章中Console.WriteLine()方法。格式化表达式使用两个有效的接口IFormatProvider和IFormattable来处理。在自己的类上实现这两个接口,实际上就可以定义自己的格式化序列,这样,Console.WriteLine()和类似的类就可以指定的方式显示类的值。
正则表达式——.NET提供一些非常复杂的类来识别字符串,或从长字符串中提取满足某些复杂条件的子字符串。例如,找出字符串中所有重复出现的某个字符或一组字符,或者找出以s开头日至少包含一个n的所有单词,或者找出遵循雇员ID或社会安全号码结构的字符串。

System.String类

System.String是一个类,专门用于存储字符串,允许对字符串进行许多操作。
使用运算符重载可以连接字符串

string message1="Hello";
message1+=",There";
string message2=message1+"!";

C#允许使用类似于索引器的语法来提取指定的字符

string message="Hello";

char char4=message[4];

System.String类可完成常见的任务,如替换字符、删除空白和把字母变成大写形式等。

image

创建字符串

在StringBuilder类上可以处理仅限于替换和追加或删除字符串中的文本。在使用String类构造一个字符串时,要给它分配足够的内存来保存字符串。在默认情况下根据初始化StringBuilder实例时的字符串长度来确定内存的大小。
StringBuilder类有两个主要的属性:
Length指定字符串的实际长度;
Capacity指定字符串在分配的内存中的最大长度。使用StringBuilder类,需要在代码中引用System.Text类。


StringBuilder greetingBuilder=new StringBuilder("Hello from all the guys at wrox Press. ",150);

greetingBuilder.AppendFormat("We do hope you enjoy this book as much as we enjoyed writing it");

执行上面的代码时,它首先创建一个StringBuilder对象。

image

StringBuilder成员

StringBuilder类还有几个其他的构造函数,例如,可以只提供一个字符串:

StringBuilder sb=new StringBuilder("Hello");

用给定的容量创建一个空的StringBuilder类:

StringBuilder sb=new StringBuilder(20);

还有一只读属性MaxCapacity,它表示对给定的StrignBuilder实例的容量限制。

StringBuilder类主要的方法:

image

格式化字符串

.NET运行库定义一种标准方式:使用IFormattable接口。如果要在列表框或文本框中显示一个变量的值,一般就使用String.Format()方法来获得该变量的适当字符串表示,但用于请求所需格式的格式说明符与传递给Console.WriteLine()方法的格式相同。数字类型的常见格式说明符。

image

字符串的格式化

为说明如何格式化字符串,首先看一下下面的语句

Console.WriteLine("The double is {0,10:E} and the int contains{1}",d,i);

Console.WriteLine()方法只是把参数的完整类别传递给静态方法String.Format()。如果要在字符串中以其他格式化这些值,显示在一个文本框中,则也可以调用这个方法。实现带有3个参数Write Line()重载方法的代码如下:

pblic void WriteLine(string format,object argo,object arg1)
{
    this.WriteLine(string.Format(this.FormatProvider,format,
    new object[]{arg0,arg1}));
}

IFormattable接口只定义一个方法,该方法也命名为ToString(),它带有两个参数,这与System.Object版本的ToString()方法不同,它不带参数。IFormattable接口的定义:

iterface IFormattable
{
    string ToString(string format,IFormatProvider formatProvider);
}
Console.WriteLine("The double is {0,10:E} and the int contains {1}",d,i);

整个字符串格式化过程:

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/957931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF实战案例 | C# WPF实现大学选课系统

WPF实战案例 | C# WPF实现大学选课系统 一、设计来源1.1 主界面1.2 登录界面1.3 新增课程界面1.4 修改密码界面 二、效果和源码2.1 界面设计(XAML)2.2 代码逻辑(C#) 源码下载更多优质源码分享 作者:xcLeigh 文章地址&a…

对数的换底公式及其证明

一、换底公式 二、证明 设 ,由于对数和指数之间可以相互转换,不难得到:。 将 等式两边分别取以c为底的对数,得到: 联立(1)(2)式,得到: &#x…

STM32补充——IAP

0 前置知识: FLASH相关内容:前往STM32补充——FLASH STM32三种烧录方式(看看就行): 1.ISP:In System Programming(在系统编程) 执行芯片厂商的 Bootloader 程序进入 ISP 模式&…

【2024年华为OD机试】(C/D卷,200分)- 5G网络建设 (JavaScriptJava PythonC/C++)

一、问题描述 题目描述 现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站,编号固定为1到N。接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通。不同基站之间假设光纤的成本各不相同,且有些节点之间已经存在光纤相连。 …

计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【Linux】深刻理解动静态库

1.什么是库 库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式,可以被操作系统载…

CrypTen——基于pytorch的隐私保护机器学习框架

目录 一、CrypTen概述 二、应用场景 三、CrypTen优势 四、CrypTen技术解析 1.基于pytorch的构建基础 2.核心密码学原语 3.加密模型训练流程 五、传统隐私保护技术与CrypTen的对比 1.传统隐私保护技术介绍 2.CrypTen与传统隐私保护技术的区别 六、CrypTen的环境配置…

他把智能科技引入现代农业领域

江苏田倍丰农业科技有限公司(以下简称“田倍丰”)是一家专注于粮油种植的农业科技公司,为拥有300亩以上田地的大户提供全面的解决方案。田倍丰通过与当地政府合作,将土地承包给大户,并提供农资和技术,实现利…

电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测

电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测 目录 电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测预测效果基本描述程序设计参考资料 预测效果 基本描述 电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测 锂电池作为现代电子设备的重要动力…

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…

UE虚幻引擎No Google Play Store Key:No OBB found报错如何处理?

问题描述&#xff1a; UE成功打包APK并安装过后&#xff0c;启动应用时提示&#xff1a; No Google Play Store KeyNo OBB found and no store key to try to download. Please setone up in Android Project SettingsUE配置默认在打包APK时会附加生成一个OBB文件&#xff0c;…

Github 2025-01-20 开源项目周报 Top15

根据Github Trendings的统计,本周(2025-01-20统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10Rust项目2TypeScript项目1C++项目1Jupyter Notebook项目1Go项目1Tabby: 自托管的AI编码助手 创建周期:310 天开发语言:Rust协议类…

给工作流穿上漂亮的衣服,创建用户交互界面并调用工作流,可定制的工作流,奶奶都能看明白的扣子智能体免费系列教程(10)

创建工作流看这个 搭建小红书梗图、歪理生成器工作流搭建 效果 欢迎来到滔滔讲AI。本教程为免费系列教程&#xff0c;感谢关注&#xff0c;以防找不到。 一、新建应用 方式一&#xff0c;点击左侧导航的加号 方式二、在工作空间面板选择右上角的创建按钮 选择创建应用 二、…

Python网络自动化运维---用户交互模块

文章目录 目录 文章目录 前言 实验环境准备 一.input函数 代码分段解析 二.getpass模块 前言 在前面的SSH模块章节中&#xff0c;我们都是将提供SSH服务的设备的账户/密码直接写入到python代码中&#xff0c;这样很容易导致账户/密码泄露&#xff0c;而使用Python中的用户交…

免费送源码:Java+springboot+MySQL 婴儿疫苗接种管理系统的设计与实现 计算机毕业设计原创定制

目 录 摘要 1 1 绪论 1 1.1概述 1 1.2课题意义 1 1.3研究思路及创新之处 1 1.4springboot框架介绍 1 1.5论文结构与章节安排 1 2 婴儿疫苗接种管理系统分析 3 2.1 可行性分析 3 2.1.1 技术可行性分析 3 2.1.2 经济可行性分析 3 2.1.3 法律可行性分析 3 2.2 系统功…

三相电变为家庭220V,市电火线和零线关系,为什么用三相电输送

参考&#xff1a; https://www.zhihu.com/question/30555841/answer/85723024 上面是电力系统的主要组成&#xff0c;发电站发电后升压传输&#xff0c;然后到各大城市再降压使用。 我们看到电塔上都是三根线&#xff0c;那么因为整个过程都是三相电。 为什么用三相电&#xff…

CIMRTS材质美化--放大采样、缩小采样

最新的CIMRTS v1.0.10中在要素管理中的材质美化增加「放大采样」和「缩小采样」参数&#xff0c;对于透明树叶可以达到较好效果。 在CesiumLab中&#xff0c;一棵树处理完成后&#xff0c;在EarthSDK中&#xff0c;就是呈现这样缩小就会有树叶丢失的情况。效果如下&#xff1a…

SQL-leetcode—1179. 重新格式化部门表

1179. 重新格式化部门表 表 Department&#xff1a; ---------------------- | Column Name | Type | ---------------------- | id | int | | revenue | int | | month | varchar | ---------------------- 在 SQL 中&#xff0c;(id, month) 是表的联合主键。 这个表格有关…

城市生命线安全保障:技术应用与策略创新

城市生命线工程是维系城市正常运行、满足群众生产生活需要的重要基础设施。随着城市化进程的加快&#xff0c;城市基础设施生命线安全运行的复杂性日益加剧&#xff0c;保障城市居民日常生活正常运行的水、电、气、热等各类地下管线以及桥梁、市政设施、轨道交通等城市基础设施…

vue2的$el.querySelector在vue3中怎么写

这个也属于直接操作 dom 了&#xff0c;不建议在项目中这样操作&#xff0c;不过我是在vue2升级vue3的时候遇到的&#xff0c;是以前同事写的代码&#xff0c;也没办法 先来看一下对比 在vue2中获取实例是直接通过 this.$refs.xxx 获取绑定属性 refxxx 的实例&#xff0c;并且…