当前位置: 首页 > 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.前言 在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...