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

C#几种截取字符串的方法

在这里插入图片描述

在C#编程中,经常需要对字符串进行截取操作,即从一个长字符串中获取所需的部分信息。本文将介绍几种常用的C#字符串截取方法,并提供相应的示例代码。


目录

  • 1. 使用Substring方法
  • 2. 使用Split方法
  • 3. 使用Substring和IndexOf方法
  • 4. 使用Regex类
  • 5. 扩展思维
  • 总结

1. 使用Substring方法

Substring方法是C#中最常用的字符串截取方法之一。它通过指定起始位置和长度来截取字符串的一部分。

示例代码:

string originalString = "Hello, World!";
string subString = originalString.Substring(7, 5);
Console.WriteLine(subString);

输出结果:

World

在上述示例中,我们从原始字符串"Hello, World!“的第7个字符开始(包括第7个字符),截取5个字符,得到子字符串"World”。

需要注意的是,Substring方法的第一个参数是起始位置(从0开始计算),第二个参数是截取的长度。如果不指定第二个参数,则会截取从起始位置到字符串末尾的所有字符。


2. 使用Split方法

Split方法可以将一个字符串分割为多个子字符串,并将其存储在一个字符串数组中。我们可以通过指定分隔符来截取字符串。

示例代码:

string originalString = "Hello, World!";
string[] subStrings = originalString.Split(',');
foreach (string subString in subStrings)
{Console.WriteLine(subString);
}

输出结果:

HelloWorld!

在上述示例中,我们使用逗号作为分隔符将原始字符串分割为两个子字符串。然后,通过遍历字符串数组,我们可以逐个输出子字符串。

需要注意的是,Split方法将返回一个字符串数组,其中每个元素都是原始字符串根据指定分隔符分割后的子字符串。如果原始字符串中没有找到分隔符,则返回只包含原始字符串的单元素数组。


3. 使用Substring和IndexOf方法

如果我们需要截取某个字符串之前或之后的子字符串,可以结合Substring和IndexOf方法来实现。

示例代码:

string originalString = "Hello, World!";
int index = originalString.IndexOf(',');
string subString = originalString.Substring(0, index);
Console.WriteLine(subString);

输出结果:

Hello

在上述示例中,我们使用IndexOf方法找到字符串中第一个逗号的位置,然后使用Substring方法截取从头开始到该位置的子字符串,即"Hello"。

需要注意的是,IndexOf方法将返回第一个找到的分隔符的索引位置。如果未找到分隔符,则返回-1。


4. 使用Regex类

如果我们要根据一定的模式对字符串进行截取,可以利用正则表达式来实现。

示例代码:

using System.Text.RegularExpressions;string originalString = "Hello, World!";
string pattern = @"\b\w+\b"; 
MatchCollection matches = Regex.Matches(originalString, pattern);
foreach (Match match in matches)
{Console.WriteLine(match.Value);
}

输出结果:

Hello
World

在上述示例中,我们使用正则表达式模式\b\w+\b来匹配原始字符串中的单词。然后,使用Regex.Matches方法检索所有匹配项,并通过遍历MatchCollection对象来逐个输出匹配项的值。

需要注意的是,使用正则表达式进行字符串截取时,我们必须了解并定义好相应的正则表达式模式。


5. 扩展思维

除了上述介绍的四种常用的字符串截取方法之外,你还可以进一步扩展思维,尝试以下方法:

  • 使用Remove方法:Remove方法可以移除字符串的指定部分,从而实现字符串的截取效果。

示例代码:

string originalString = "Hello, World!";
string newString = originalString.Remove(5);
Console.WriteLine(newString);

输出结果:

Hello

在上述示例中,我们使用Remove方法删除原始字符串的前5个字符,得到子字符串"Hello"。

  • 使用Substring和LastIndexOf方法:LastIndexOf方法与IndexOf方法类似,不同之处在于它查找并返回指定字符或字符串的最后一个匹配项的索引。可以与Substring方法结合使用来实现从指定位置开始截取字符串的效果。

  • 自定义扩展方法:根据实际需求,你还可以自定义扩展方法来实现更灵活的字符串截取模式。


总结

本文介绍了几种常用的C#字符串截取方法,包括使用Substring方法、Split方法、Substring和IndexOf方法以及使用Regex类。根据具体的需求,我们可以选择合适的方法来截取字符串,并灵活应用于实际编程中。

除了这些常见的方法,你还可以根据实际情况进行拓展和扩展,进一步丰富自己的字符串处理能力。不断学习和实践,掌握更多的技巧和方法,将有助于提高你的编程技能和效率。

相关文章:

C#几种截取字符串的方法

在C#编程中,经常需要对字符串进行截取操作,即从一个长字符串中获取所需的部分信息。本文将介绍几种常用的C#字符串截取方法,并提供相应的示例代码。 目录 1. 使用Substring方法2. 使用Split方法3. 使用Substring和IndexOf方法4. 使用Regex类…...

【PG】PostgreSQL高可用方案repmgr部署(非常详细)

目录 简介 1 概述 1.1 术语 1.2 组件 1.2.1 repmgr 1.2.2 repmgrd 1.3 Repmgr用户与元数据 2 安装部署 2.0 部署环境 2.1 安装要求 2.1.1 操作系统 2.1.2 PostgreSQL 版本 2.1.3 操作系统用户 2.1.4 安装位置 2.1.5 版本要求 2.2 安装 2.2.1 软件包安装 2.2…...

Linux Makefile配置问题

编写一个简单的工程文件,制作Makefile需要包含lpthread,当Makefile写为如下配置时 #CROSSCOMPILE : arm-linux- CROSSCOMPILE :CFLAGS : -Wall -O2 -c CFLAGS -I$(PWD)LDFLAGS : -lpthread LDFLAGS -lm -ldlCC : $(CROSSCOMPILE)gcc #LD :…...

k8s篇之underlay网络和overlay区别

k8s中underlay网络和overlay区别 一、网络 1 Overlay网络: Overlay叫叠加网络也叫覆盖网络,指的是在物理网络的基础之上迭代实现新的虚拟网络,即可使网络中的容器可以互相通信。 优点是对物理网络的兼容性比较好,可以实现pod的…...

掉瓶子小游戏

欢迎来到程序小院 掉瓶子 玩法:旋转的瓶子,根据瓶子方向,点击鼠标左键瓶子掉落,从桌面中间掉下即得1分,卡在桌边瓶子碎了游戏结束,快去掉瓶子吧^^。开始游戏https://www.ormcc.com/play/gameStart/203 htm…...

Elasticsearch7 入门 进阶

1、全文检索 1.1、数据分类 按数据分类的话,主要可以分为以下三类: 结构化数据:固定格式、有限长度,比如mysql存的数据非结构化数据:不定长、无固定格式,比如邮件、Word文档、日志等半结构化数据&#xf…...

你是怎么封装微信小程序的数据请求的?

当封装微信小程序的数据请求时,可以采用一种模块化的方法,将请求逻辑与界面逻辑分离,以提高代码的可维护性和可扩展性。以下是一个基于前言、高质量代码、理解、优缺点和结尾的范例: 前言 在微信小程序中,数据请求是…...

C++ vector中capacity()和size() 的区别

size是指容器当前拥有元素的个数&#xff0c; capacity是指容器在必须分配新的存储空间之前可以存放的元素总数。 如vector<int> ivect(10),ivect.capacity()10&#xff0c;ivect.size()0, 当向ivect中插入元素时&#xff0c;只要没有超过10个&#xff0c;那么capacity就…...

【Redis】redis-server和redis-cli

上一篇《redis 的下载和安装》 https://blog.csdn.net/m0_67930426/article/details/134341071?spm1001.2014.3001.5501 安装完之后开始使用 打开客户端之前需要先打开服务端 redis-server 直接使用该命令打开就行 然后在打开客户端 redis-cli 使用ping命令查看是否连接服…...

【系统架构设计】架构核心知识: 2.4 系统建模过程和系统设计

目录 一 系统建模过程 1 结构化建模 2 信息工程建模方法 3 面向对象建模方法...

企业电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…...

ubantu libssl.so.1.1: cannot open shared object file

libssl.so.1.1: cannot open shared object file 使用 Ubuntu 22.04 时&#xff0c;有时候会遇到如下错误 error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 这是因为Ubuntu 22.04 默认使用的是 openssl3.0 …...

python matlplotlib/seaborn 绘制曲线的平均值标准差阴影图

1. seaborn 旧版本(0.8.1)中使用tsplot&#xff0c;新版本中使用lineplot 直线代表均值&#xff0c;阴影代表meanstd&#xff08;带有置信区间&#xff0c;参数ci&#xff09; import seaborn as sns import matplotlib.pyplot as plt import numpy as np import pandas as p…...

【Linux基础IO篇】深入理解文件系统、动静态库

【Linux基础IO篇】深入理解文件系统、动静态库 目录 【Linux基础IO篇】深入理解文件系统、动静态库再次理解文件系统操作系统内存管理模块&#xff08;基础&#xff09;操作系统如何管理内存 Linux中task_struct源码结构 动态库和静态库动静态库介绍&#xff1a;生成静态库库搜…...

flink 写入 starrocks 报错 too many filtered rows attachment

可能原因1 把你starrocks中DDL里的varchar(...) 先修改为STRING. 一般是因为字段超出定义的长度. 可能原因2 csv里有脏数据 导致3列被切分为4列 ....PRIMARY KEY (id) NOT ENFORCED ) WITH (connector starrocks,jdbc-url ...,username ...,password ...,database-nam…...

Windows 安装 Maven

目录 安装 JDK下载 Maven配置阿里云镜像配置环境变量 安装 JDK Windows 安装 JDK 下载 Maven 下载地址&#xff1a;https://maven.apache.org/download.cgi 下载 apache-maven-3.9.5-bin.zip 到本地解压到 D:\Software\apache-maven-3.9.5 配置阿里云镜像 配置阿里云远程仓…...

一文读懂关于IPv6的那些事

作为下一代互联网的战略发展方向&#xff0c;我国正加速IPv6的升级改造&#xff0c;目前从网络基础设施如运营商骨干网、城域网到互联网服务商如各类云服务以及包括手机、电脑、路由器等终端设备厂商都开始支持IPv6网络。那么到底什么是IPv6&#xff1f;IPv6有哪些特点呢&#…...

数据结构—队列的实现

前言&#xff1a;上次我们已经学习了数据结构中一个重要的线性表—栈&#xff0c;那么我们这一次就来学习另外一个重要的线性表—队列。 目录&#xff1a; 一、 队列的概念 二、 队列的实现&#xff1a; 1.队列的创建 三、 队列的操作 1.初始化队列 2.队尾入队列 3.队头出队列…...

Linux_shell脚本中的stty

shell脚本中的stty stty是用于配置终端&#xff08;tty&#xff09;设置的命令。它允许用户查看和修改与终端相关的各种参数。下面是stty命令的一些常见用法和参数&#xff1a; 基本语法&#xff1a; stty [OPTION] [SETTING]常见选项和参数&#xff1a; 基本设置&#xff1…...

HTML转PDF模板

一、准备pom依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>html2pdf</artifactId><version>1.0.2</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId&g…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

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

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

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...