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

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...