当前位置: 首页 > news >正文

C# Replace()、Trim()、Split()、Substring()、IndexOf() 、 LastIndexOf()函数

目录

一、Replace()

二、Trim()

三、Split()

四、Substring()

五、IndexOf()

六、LastIndexOf()


一、Replace()

在C#中,Replace()是一个字符串方法,用于将指定的字符或子字符串替换为另一个字符或字符串。下面是一些Replace()方法的常见用法和示例代码:

  1. 将字符串中的一个字符替换为另一个字符
    string original = "Hello World";
    string replaced = original.Replace('o', '0');
    Console.WriteLine(replaced); // 输出: Hell0 W0rld
    

    可以使用 Replace() 方法删除空格                                                                                             使用 String.Replace() 方法 ,将空格替换为空字符串:

    string str = " This is a string with spaces. ";
    str = str.Replace(" ", "");
    Console.WriteLine(str);
    

    可删掉所有空格                                                                                                                        

  2. 将字符串中的一个子字符串替换为另一个字符串
    string original = "The quick brown fox jumps over the lazy dog";
    string replaced = original.Replace("fox", "cat");
    Console.WriteLine(replaced); // 输出: The quick brown cat jumps over the lazy dog
    

  3. 在字符串中使用正则表达式替换匹配的内容
    string original = "Hello, World!";
    string replaced = Regex.Replace(original, "[aeiou]", "*");
    Console.WriteLine(replaced); // 输出: H*ll*, W*rld!
    

    在这个例子中,使用正则表达式 [aeiou] 匹配字符串中的任何一个元音字母,并用 * 替换匹配的内容。

    需要注意的是,Replace()方法返回一个新的字符串,而不是修改原始字符串。

二、Trim()

C#中的Trim()方法用于移除字符串的开头和结尾处的空白字符,包括空格、制表符和换行符等。它返回一个新的字符串,该字符串是原始字符串的副本,但是开头和结尾的空白字符已被移除。

下面是一些使用Trim()方法的示例:

string str1 = "   Hello World!   ";
string str2 = "\t\tHello World!\t\t";
string str3 = "\n\nHello World!\n\n";// 使用Trim方法移除开头和结尾处的空白字符
string trimmed1 = str1.Trim();
string trimmed2 = str2.Trim();
string trimmed3 = str3.Trim();Console.WriteLine(trimmed1); // "Hello World!"
Console.WriteLine(trimmed2); // "Hello World!"
Console.WriteLine(trimmed3); // "Hello World!"

在上面的示例中,我们定义了三个包含空白字符的字符串,分别使用Trim()方法来移除它们开头和结尾处的空白字符。在输出结果中,我们可以看到移除空白字符后的字符串。

除了Trim()方法之外,C#中还有其他几个类似的方法,如TrimStart()和TrimEnd()。TrimStart()方法用于移除字符串开头处的空白字符,而TrimEnd()方法用于移除字符串结尾处的空白字符。这些方法也返回一个新的字符串,该字符串是原始字符串的副本,但是指定位置的空白字符已被移除。

三、Split()

C#中的Split()方法用于将一个字符串按照指定的分隔符拆分成一个字符串数组。它可以接受一个或多个分隔符,并且可以指定是否忽略空白项。

下面是一些使用Split()方法的示例:

string str = "apple,banana,orange";// 使用逗号分隔字符串,并将结果保存到字符串数组中
string[] arr1 = str.Split(',');// 输出数组中的每个元素
foreach (string item in arr1)
{Console.WriteLine(item);
}// 使用多个分隔符
string str2 = "apple|banana-orange";
string[] arr2 = str2.Split(new char[] { '|', '-' });// 输出数组中的每个元素
foreach (string item in arr2)
{Console.WriteLine(item);
}// 忽略空白项
string str3 = "apple,banana,,orange";
string[] arr3 = str3.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);// 输出数组中的每个元素
foreach (string item in arr3)
{Console.WriteLine(item);
}

上述示例运行后的结果如下:

apple
banana
orange
apple
banana
orange
apple
banana
orange

第一个示例将原始字符串按逗号分隔成了3个字符串,分别是"apple"、"banana"和"orange",然后将它们输出到控制台。

第二个示例将原始字符串按照'|'和'-'两个分隔符分隔成了3个字符串,同样将它们输出到控制台。

第三个示例在原始字符串中增加了一个空白项,并使用了StringSplitOptions.RemoveEmptyEntries选项来忽略空白项,最终得到的结果与第一个示例相同。

在上面的示例中,我们首先定义了一个包含多个水果名称的字符串,然后使用逗号分隔符将其拆分为一个字符串数组。接下来,我们演示了如何使用多个分隔符,并忽略空白项。

需要注意的是,Split()方法返回的是一个字符串数组。如果原始字符串中不包含分隔符,则Split()方法会返回一个只包含原始字符串的字符串数组。

四、Substring()

C#中的Substring()方法用于从一个字符串中提取指定长度的子字符串。它有两个重载版本,一个接受一个起始索引和一个长度作为参数,另一个接受一个起始索引并返回从该索引开始到字符串的末尾的所有字符。

下面是一些使用Substring()方法的示例:

string str = "Hello, world!";// 从索引6开始提取3个字符
string sub1 = str.Substring(6, 3);
Console.WriteLine(sub1); // "wor"// 从索引7开始提取到字符串末尾的所有字符
string sub2 = str.Substring(7);
Console.WriteLine(sub2); // "world!"

在上面的示例中,我们首先定义了一个包含"Hello, world!"的字符串。然后,我们使用Substring()方法从索引6开始提取3个字符,并将结果保存到sub1字符串变量中。接下来,我们使用Substring()方法从索引7开始提取到字符串末尾的所有字符,并将结果保存到sub2字符串变量中。最后,我们将这两个子字符串输出到控制台。

需要注意的是,Substring()方法返回的是一个新的字符串,原始字符串并没有被修改。如果指定的起始索引超出了字符串的范围,或者指定的长度超出了从起始索引开始到字符串结尾的字符数,Substring()方法将抛出一个ArgumentOutOfRangeException异常。

五、IndexOf()

C#中的IndexOf()方法用于在字符串中查找指定的字符或子字符串,并返回第一次出现的位置索引。它有多个重载版本,可以指定查找的起始索引、查找方向等参数。

下面是一些使用IndexOf()方法的示例:

string str = "The quick brown fox jumps over the lazy dog.";// 查找字符串"fox"第一次出现的位置
int index1 = str.IndexOf("fox");
Console.WriteLine(index1); // 16// 从索引20开始查找字符串"fox"第一次出现的位置
int index2 = str.IndexOf("fox", 20);
Console.WriteLine(index2); // -1// 从索引20开始向前查找字符串"fox"第一次出现的位置
int index3 = str.IndexOf("fox", 20, StringComparison.CurrentCultureIgnoreCase);
Console.WriteLine(index3); // 16

在上面的示例中,我们首先定义了一个包含"The quick brown fox jumps over the lazy dog."的字符串。然后,我们使用IndexOf()方法查找字符串"fox"第一次出现的位置,并将结果保存到index1变量中。接下来,我们使用IndexOf()方法从索引20开始查找字符串"fox"第一次出现的位置,并将结果保存到index2变量中。由于"fox"不在从索引20开始的子字符串中出现,所以返回值为-1。最后,我们使用IndexOf()方法从索引20开始向前查找字符串"fox"第一次出现的位置,并将结果保存到index3变量中。由于字符串"fox"在从索引16开始的子字符串中出现,所以返回值为16。

需要注意的是,IndexOf()方法返回第一次出现的位置索引,如果字符串中不存在指定的字符或子字符串,将返回-1。此外,IndexOf()方法默认区分大小写,如果要进行不区分大小写的查找,可以使用StringComparison.OrdinalIgnoreCase或StringComparison.CurrentCultureIgnoreCase等参数。

六、LastIndexOf()

C#中的LastIndexOf()方法与IndexOf()方法类似,也是用于在字符串中查找指定的字符或子字符串,并返回最后一次出现的位置索引。它同样有多个重载版本,可以指定查找的起始索引、查找方向等参数。

下面是一些使用LastIndexOf()方法的示例:

string str = "The quick brown fox jumps over the lazy dog.";// 查找字符串"fox"最后一次出现的位置
int index1 = str.LastIndexOf("fox");
Console.WriteLine(index1); // 16// 从索引20开始向前查找字符串"fox"最后一次出现的位置
int index2 = str.LastIndexOf("fox", 20);
Console.WriteLine(index2); // -1// 从索引20开始向前查找字符串"fox"最后一次出现的位置
int index3 = str.LastIndexOf("fox", 20, StringComparison.CurrentCultureIgnoreCase);
Console.WriteLine(index3); // 16

在上面的示例中,我们使用了LastIndexOf()方法查找字符串"fox"最后一次出现的位置,并分别指定了不同的起始索引和查找方向参数。其余的使用方法与IndexOf()方法类似。

需要注意的是,LastIndexOf()方法返回最后一次出现的位置索引,如果字符串中不存在指定的字符或子字符串,将返回-1。此外,LastIndexOf()方法默认区分大小写,如果要进行不区分大小写的查找,可以使用StringComparison.OrdinalIgnoreCase或StringComparison.CurrentCultureIgnoreCase等参数。

相关文章:

C# Replace()、Trim()、Split()、Substring()、IndexOf() 、 LastIndexOf()函数

目录 一、Replace() 二、Trim() 三、Split() 四、Substring() 五、IndexOf() 六、LastIndexOf() 一、Replace() 在C#中,Replace()是一个字符串方法,用于将指定的字符或子字符串替换为另一个字符或字符串。下面是一些Replace()方法的常见用法和示例…...

C++类的理解与类型名,类的成员,两种定义方式,类的访问限定符,成员访问,作用域与实例化对象

面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题 C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成 面向…...

【华为OD机试真题 C++】1051 - 处理器问题 | 机试题+算法思路+考点+代码解析

文章目录 一、题目🔸题目描述🔸输入输出🔸样例1🔸样例2 二、题目解析三、代码参考 作者:KJ.JK 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &…...

Linux 常用操作命令大全

一、基础知识 1.1 Linux系统的文件结构 /bin 二进制文件,系统常规命令 /boot 系统启动分区,系统启动时读取的文件 /dev 设备文件 /etc 大多数配置文件 /home 普通用户的家目录 /lib 32位函数库 /lib64 64位库 /media 手动临时挂载点 /mnt 手动临时挂载点…...

Git使用教程

Git 目标 Git简介【了解】 使用Git管理文件版本【重点】 远程仓库使用【掌握】 分支管理【重点】 远程仓库【掌握】 一、Git简介 1、版本控制系统简介 1.1、版本控制前生今世 版本控制系统Version Control Systems,简称 VCS是将『什么时候、谁、对什么文件…...

substrate中打印调试信息的多种方式详解

目录 1. 获取substrate-node-template代码2. 添加一个用于测试的pallet至依赖到pallets目录3. log方式来输出信息3.1 将log依赖添到cargo.toml文件3.2 log-test/src/lib.rs修改call方法 3.3 polkadot.js.调用测试函数do_something_log_test4. printable trait方式来输出信息4.1…...

Disentangled Graph Collaborative Filtering

代码地址:https://github.com/ xiangwang1223/disentangled_graph_collaborative_filtering Background: 现有模型在很大程度上以统一的方式对用户-物品关系进行建模(将模型看做黑盒,历史交互作为输入,Embedding作为输出。)&…...

Nginx快速上手

Nginx快速上手 OVERVIEW Nginx快速上手一、基本概念1.Nginx初步认识2.正向/反向代理(1)正向代理(2)反向代理 二、Nginx 安装和配置1.安装2.Nginx指令3.Nginx配置 三、Nginx的使用1.Web服务器(1)静态网页存储…...

【设计模式】实际场景解释策略模式与工厂模式的应用

文章目录 前言策略模式概念场景示例 工厂模式概念场景示例 策略模式与工厂模式的比较相同点不同点 总结 前言 策略模式和工厂模式是常见的设计模式,它们可以帮助我们更好地组织和管理代码,提高代码的可维护性和可扩展性。 在本篇博客中,我将…...

外包干了三年,算是废了...

先说一下自己的情况。大专生,19年通过校招进入湖南某软件公司,干了接近3年的测试,今年年上旬,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了三年&#xff0c…...

九龙证券|光模块概念股封单资金超3亿元,传媒板块涨停潮来袭

今天A股三大股指低开低走。沪深两市收盘共37股涨停。剔除4只ST股,合计33股涨停。另外,10股封板未遂,整体封板率为78.72%。 涨停战场: 华工科技封单资金超3亿元 从收盘涨停板封单量来看,同方股份封单量最高&#xff0…...

[ES6] 数组

[ES6] 数组 数组的创建类数组对象可迭代对象的转换 扩展方法findfindIndexfillcopyWithinentrieskeysvaluesincludesflatflatMap 扩展运算符复制数组合并数组 数组缓冲区创建数组缓冲区视图创建 定型数组创建通过数组缓冲区生成通过构造函数 定型数组特性 拷贝浅拷贝深拷贝 数组…...

【问题描述】编写一个程序计算出球、圆柱和圆锥的表面积和体积。

【问题描述】 编写一个程序计算出球、圆柱和圆锥的表面积和体积。 要求: (1)定义一个基类,至少含有一个数据成员半径,并设为保护成员; (2)定义基类的派生类球、圆柱、圆锥&#…...

Python 人工智能:16~20

原文:Artificial Intelligence with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如何…...

【华为OD机试真题】最优资源分配(javapython)

最优资源分配 知识点数组贪心Q时间限制:1s空间限制:32MB限定语言:不限 题目描述: 某块业务芯片最小容量单位为1.25G,总容量为M1.25G,对该芯片资源编号为1,2,…,M。该芯片支持3种不同的配置,分别为A、B、C。 配置A:占用容量为1.251=1.25G 配置B:占用容量为1.252=2…...

git的使用——操作流程

一、什么是git git是一个开源的分布式版本控制软件,能够有效并高效的处理很小到非常大的项目。 二、添加SSH公钥 安装下载后,会发现鼠标右击,会出现 Git Bash Here 这个选项,如图所示,点击进入 1.打开git窗口后&…...

Ae:自动定向

Ae 菜单:图层/变换/自动定向 Auto-Orient 快捷键:Ctrl Alt O 自动定向 Auto-Orient是 Ae 图层中的一个附加的、隐藏实现(不会在时间轴面板上更改属性的值)的功能,它可以使得图层自动旋转或改变方向以朝向指定的运动路…...

ClickHouse入门详解

ClickHouse基础部分详解 一、ClickHouse简介二、ClickHouse单机版安装2.1、ClickHouse安装前准备环境2.2、ClickHouse单机安装2.3、ClickHouse一些默认路径2.4、ClickHouse端口说明 三、ClickHouse数据类型四、ClickHouse的表引擎4.1 MergeTree4.1.1 partition by 分区 五、Cli…...

javaweb笔记2

JSP 1、在webapp的根目录下新建一个index.jsp文件,访问以下地址: http://localhost:8080/webappName/index.jsp 实际上访问这个index.jsp文件,底层执行的是:index_jsp.class这个程序。 这个index.jsp会被tomcat翻译成index_jsp.j…...

【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如…...

Spring Boot中UriComponentsBuilder的5个实用技巧:从URL拼接到底层编码原理

Spring Boot中UriComponentsBuilder的5个实用技巧:从URL拼接到底层编码原理 在对接第三方API时,URL的拼接与编码往往是开发者最容易踩坑的环节之一。Spring Boot提供的UriComponentsBuilder工具,不仅能优雅地处理参数拼接,还能解决…...

拨叉[831002] 2-钻φ60孔夹具

拨叉作为机械传动系统中的关键零件,其加工精度直接影响设备运行的稳定性。在2-钻φ60孔的工序中,专用夹具的核心作用在于通过精准定位与可靠夹紧,确保孔径尺寸、位置度及表面粗糙度等关键指标符合设计要求。该夹具采用“一面两销”定位原理&a…...

FlowState Lab跨周期波动模式提取效果:从秒级到年度的规律发现

FlowState Lab跨周期波动模式提取效果:从秒级到年度的规律发现 1. 时间序列分析的革命性突破 时间序列分析领域最近迎来了一项重要突破。传统方法往往只能聚焦单一时间尺度,要么分析高频交易数据,要么研究季节性规律,很难同时捕…...

3分钟零基础入门:GPU加速MediaPipe TouchDesigner插件完整指南

3分钟零基础入门:GPU加速MediaPipe TouchDesigner插件完整指南 【免费下载链接】mediapipe-touchdesigner GPU Accelerated MediaPipe Plugin for TouchDesigner 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe-touchdesigner 你是否曾想过在TouchD…...

别再只用DataParallel了!PyTorch单机多卡训练保姆级教程(从DP到DDP实战避坑)

从DataParallel到DDP:PyTorch单机多卡训练深度优化指南 当你的模型参数突破1亿大关,单卡训练时间从几小时延长到几天时,多GPU并行训练就从一个可选项变成了必选项。但面对PyTorch提供的DataParallel(DP)和DistributedDataParallel(DDP)两种方…...

TestNet资产管理平台:从安装到实战,全面超越灯塔的解决方案

1. TestNet资产管理平台:为什么你需要它? 如果你是一名网络安全工程师或者渗透测试人员,肯定对资产管理的繁琐深有体会。传统的资产管理工具要么功能单一,要么操作复杂,而TestNet资产管理系统的出现,彻底改…...

【PVE实战】低成本2.5G网卡升级与iperf3性能验证全记录

1. 为什么需要升级到2.5G网络环境 最近几年,随着NAS、视频剪辑、虚拟机等应用场景的普及,传统的千兆网络(1Gbps)越来越显得力不从心。我自己就经常遇到这样的情况:在局域网内传输大文件时,千兆网络的极限速…...

少样本学习实战指南:从数据增强到多模态融合的5个关键技巧

少样本学习实战指南:从数据增强到多模态融合的5个关键技巧 在工业质检和医疗影像等实际场景中,数据稀缺问题长期困扰着机器学习工程师。传统深度学习模型需要海量标注数据,而现实情况往往是每个类别仅有几个样本可用。这种少样本学习&#xf…...

Phi-3 Forest Laboratory 与SpringBoot微服务整合:打造企业级AI中台

Phi-3 Forest Laboratory 与SpringBoot微服务整合:打造企业级AI中台 最近和几个做企业级应用开发的朋友聊天,大家不约而同地提到了同一个痛点:公司内部有好几个业务团队都想用上最新的AI能力,比如用Phi-3这样的模型做智能客服、文…...

Blender3mfFormat插件全攻略:从基础到进阶的3MF文件处理指南

Blender3mfFormat插件全攻略:从基础到进阶的3MF文件处理指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 一、基础认知:3MF格式与插件价值解析…...