C# 字符串常用方法
文章目录
- Length:获取字符串中字符的个数(不包括末尾的空字符)
- ToLower() 和 ToUpper():将字符串转换为小写或大写形式
- Substring(int startIndex, int length):从指定索引开始截取指定长度的子字符串
- Remove(int startIndex, int length):从指定索引开始移除指定长度的字符
- Replace(string oldValue, string newValue):替换字符串中的指定字符或子字符串
- Split(char[] separator, StringSplitOptions options) :根据指定的分隔符拆分字符串
- IndexOf(char value) 和 IndexOf(string value):查找指定字符或子字符串在字符串中第一次出现的位置
- LastIndexOf(char value) 和 LastIndexOf(string value):查找指定字符或子字符串在字符串中最后一次出现的位置
- Trim()、TrimStart() 和 TrimEnd():移除字符串开头、结尾或两端的空白字符(包括空格、制表符和换行符)
- Contains(string value):判断字符串是否包含指定的子字符串
- StartsWith(string value) 和 EndsWith(string value):判断字符串是否以指定的子字符串开始或结束
- PadLeft(int totalWidth) 和 PadRight(int totalWidth):在字符串的左侧或右侧填充空格,直到达到指定的总宽度
- Join(string separator, params string[] values):将多个字符串连接成一个字符串,并使用指定的分隔符分隔它们
- Format(string format, params object[] args):格式化字符串,将指定的参数插入到格式字符串中
- IsNullOrEmpty(string value):判断字符串是否为空或null
- IsNullOrWhiteSpace(string value):判断字符串是否为空、null或仅包含空白字符
- Concat(params string[] values):连接多个字符串并返回一个新的字符串
- CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count):将字符串中的字符复制到指定的字符数组中
- IndexOfAny(char[] anyOf) 和 LastIndexOfAny(char[] anyOf):查找字符数组中字符在字符串中第一次或最后一次出现的位置
- PadLeft(int totalWidth, char paddingChar) 和 PadRight(int totalWidth, char paddingChar):在字符串的左侧或右侧填充指定的字符,直到达到指定的总宽度
- Remove(int startIndex):从指定索引开始移除字符串的剩余部分
- Insert(int startIndex, string value):在指定索引处插入一个字符串
- 字符串插值(String Interpolation)(C# 6.0及更高版本):使用$符号和大括号{}来嵌入变量或表达式,从而创建格式化的字符串
Length:获取字符串中字符的个数(不包括末尾的空字符)
string str = "Hello";
Console.WriteLine(str.Length); // 输出 5
ToLower() 和 ToUpper():将字符串转换为小写或大写形式
string str = "Hello";
Console.WriteLine(str.ToLower()); // 输出 "hello"
Console.WriteLine(str.ToUpper()); // 输出 "HELLO"
Substring(int startIndex, int length):从指定索引开始截取指定长度的子字符串
string str = "Hello World";
Console.WriteLine(str.Substring(6, 5)); // 输出 "World"
Remove(int startIndex, int length):从指定索引开始移除指定长度的字符
string str = "Hello World";
Console.WriteLine(str.Remove(6, 5)); // 输出 "Hello "
Replace(string oldValue, string newValue):替换字符串中的指定字符或子字符串
string str = "Hello World";
Console.WriteLine(str.Replace('o', '0')); // 输出 "Hell0 W0rld"
Console.WriteLine(str.Replace("World", "C#")); // 输出 "Hello C#"
Split(char[] separator, StringSplitOptions options) :根据指定的分隔符拆分字符串
string str = "Hello,World,C#";
string[] parts = str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string part in parts)
{ Console.WriteLine(part); // 输出 "Hello" "World" "C#"
}
IndexOf(char value) 和 IndexOf(string value):查找指定字符或子字符串在字符串中第一次出现的位置
string str = "Hello World";
Console.WriteLine(str.IndexOf('W')); // 输出 6
Console.WriteLine(str.IndexOf("World")); // 输出 6
LastIndexOf(char value) 和 LastIndexOf(string value):查找指定字符或子字符串在字符串中最后一次出现的位置
string str = "abc abc abc";
Console.WriteLine(str.LastIndexOf('a')); // 输出 9(最后一个 'a' 的位置)
Console.WriteLine(str.LastIndexOf("abc")); // 输出 9(最后一个 "abc" 的位置)
Trim()、TrimStart() 和 TrimEnd():移除字符串开头、结尾或两端的空白字符(包括空格、制表符和换行符)
string str = " Hello World ";
Console.WriteLine(str.Trim()); // 输出 "Hello World"
Console.WriteLine(str.TrimStart()); // 输出 "Hello World "
Console.WriteLine(str.TrimEnd()); // 输出 " Hello World"
Contains(string value):判断字符串是否包含指定的子字符串
string str = "Hello World";
Console.WriteLine(str.Contains("World")); // 输出 True
StartsWith(string value) 和 EndsWith(string value):判断字符串是否以指定的子字符串开始或结束
string str = "Hello World";
Console.WriteLine(str.StartsWith("Hello")); // 输出 True
Console.WriteLine(str.EndsWith("World")); // 输出 True
PadLeft(int totalWidth) 和 PadRight(int totalWidth):在字符串的左侧或右侧填充空格,直到达到指定的总宽度
string str = "123";
Console.WriteLine(str.PadLeft(5)); // 输出 " 123"(左侧填充3个空格)
Console.WriteLine(str.PadRight(5, '*')); // 输出 "123**"(右侧填充2个'*')
Join(string separator, params string[] values):将多个字符串连接成一个字符串,并使用指定的分隔符分隔它们
string[] words = { "Hello", "World", "C#" };
string sentence = string.Join(", ", words);
Console.WriteLine(sentence); // 输出 "Hello, World, C#"
Format(string format, params object[] args):格式化字符串,将指定的参数插入到格式字符串中
string name = "John";
int age = 30;
string formattedString = string.Format("Name: {0}, Age: {1}", name, age);
Console.WriteLine(formattedString); // 输出 "Name: John, Age: 30"
IsNullOrEmpty(string value):判断字符串是否为空或null
string str = null;
Console.WriteLine(string.IsNullOrEmpty(str)); // 输出 True
IsNullOrWhiteSpace(string value):判断字符串是否为空、null或仅包含空白字符
string str = " ";
Console.WriteLine(string.IsNullOrWhiteSpace(str)); // 输出 True
Concat(params string[] values):连接多个字符串并返回一个新的字符串
string result = string.Concat("Hello", " ", "World"); Console.WriteLine(result); // 输出 "Hello World"
CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count):将字符串中的字符复制到指定的字符数组中
char[] charArray = new char[5];
string str = "Hello";
str.CopyTo(0, charArray, 0, 5);
Console.WriteLine(new string(charArray)); // 输出 "Hello"(注意:超出字符串长度的部分不会被复制,保持默认值)
IndexOfAny(char[] anyOf) 和 LastIndexOfAny(char[] anyOf):查找字符数组中字符在字符串中第一次或最后一次出现的位置
string str = "Hello World";
char[] chars = { 'o', 'W' };
Console.WriteLine(str.IndexOfAny(chars)); // 输出 4('o'的位置)
Console.WriteLine(str.LastIndexOfAny(chars)); // 输出 6('W'的位置)
PadLeft(int totalWidth, char paddingChar) 和 PadRight(int totalWidth, char paddingChar):在字符串的左侧或右侧填充指定的字符,直到达到指定的总宽度
string str = "123";
Console.WriteLine(str.PadLeft(5, '*')); // 输出 "**123"(左侧填充2个'*')
Console.WriteLine(str.PadRight(5, '*')); // 输出 "123**"(右侧填充2个'*')
Remove(int startIndex):从指定索引开始移除字符串的剩余部分
string str = "Hello World";
Console.WriteLine(str.Remove(6)); // 输出 "Hello "
Insert(int startIndex, string value):在指定索引处插入一个字符串
string str = "Hello";
Console.WriteLine(str.Insert(5, " World")); // 输出 "Hello World"
字符串插值(String Interpolation)(C# 6.0及更高版本):使用$符号和大括号{}来嵌入变量或表达式,从而创建格式化的字符串
int age = 30;
string name = "Alice";
string message = $"My name is {name} and I am {age} years old.";
Console.WriteLine(message); // 输出 "My name is Alice and I am 30 years old."
相关文章:
C# 字符串常用方法
文章目录 Length:获取字符串中字符的个数(不包括末尾的空字符)ToLower() 和 ToUpper():将字符串转换为小写或大写形式Substring(int startIndex, int length):从指定索引开始截取指定长度的子字符串Remove(int startIn…...
字节跳动青训营——入营考核解答(持续更新中~~~)
考核内容: 在指定的题库中自主选择不少于 15 道算法题并完成解题,其中题目难度分配如下: 简单题不少于 10 道中等题不少于 4 道困难题不少于 1 道 解答代码 8.进制求和转换(难) 代码实现: import jav…...
JavaWeb合集15-Apache POI
十五、Apache POI Apache POI是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java 序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。 使用场景:银行网银系统导出交…...
Threejs 实现3D 地图(01)创建基本场景
"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" <script setup> import { onMounted,ref } from vue import * as THREE from three import * as d3 from "d3"; //莫开托坐标 矫正地图…...
snmpdelta使用说明
1.snmpdelta介绍 snmpdelta命令是用来获取下一个节点的OID的值。 2.snmpdelta安装 1.snmpdelta安装 命令: yum -y install net-snmp net-snmp-utils [root@logstash ~]# yum -y install net-snmp net-snmp-utils Loaded plugins: fastestmirror Loading mirror speeds f…...
Hadoop集群安装
集群规划 node01node02node03角色主节点从节点从节点NameNode√DataNode√√√ResourceManager√NodeManager√√√SecondaryNameNode√Historyserver√ 上传安装包到node01 解压到指定目录 tar -zxvf /bigdata/soft/hadoop-3.3.3.tar.gz -C /bigdata/server/ 创建软链接 cd…...
VuePress集成到Vue项目的方法
VuePress 可以作为一个独立的静态站点生成器来使用,也可以集成到现有的 Vue 项目中。以下是将 VuePress 集成到 Vue 项目的几种方法: 1. 作为本地依赖集成 如果你想在现有的 Vue 项目中使用 VuePress 来管理文档,你可以将 VuePress 安装为本…...
【ROS】ROS局域网下多机通讯方法
最近工作中需要用到多机通讯,这里稍微总结一下使用方法。 目录 一、网络配置 二、修改两个设备的hosts文件 三、修改两个ros设备的.bashrc 四、launch文件中给节点设定运行的设备 一、网络配置 首先确保两个ros设备连接到同一局域网下,然后查询两个…...
linux 系统怎么使用
Linux系统的使用涉及多个方面,包括文件管理、目录操作、用户管理、进程管理、网络配置等。以下是对Linux系统基础使用的详细介绍: 一、文件管理 查看文件和目录 ls:列出当前目录的内容。ls -l:以长格式列出当前目录的内容&#x…...
Java线程池知识点梳理
Java线程池知识点梳理 什么是线程池? 线程在系统中创建的成本是相对比较高的,所以使用”池化“的思想,设计线程池,有大量任务需要执行时,可以直接从线程池中使用已经创建好的线程直接去执行。减少线程的创建和销毁带…...
SFT、RLHF、DPO、IFT —— LLM 微调的进化之路_如何搭建自己的dpo
TL;DR • SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好,再与人类的偏好进行对齐; • SFT 只通过 LLMs 生成的下一个单词进行估计,而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计,显然后者的估计会更准确; • 虽然…...
CSS 选择器简单回顾
引言 当我们探讨网页设计和开发时, CSS(层叠样式表) 无疑是一个不可或缺的技术, 它使我们能够精确控制网页的外观和布局, 为用户创造出独特的视觉体验、以及良好的交互体验!! 而一个完整的 CSS 规则则是由两个主要部分组成: 选择器和声明块 那么今天我们就来盘点下常见的几种选…...
uniapp配置微信小程序分包(分包优化)
1.manifest.json中 源码视图中找到mp-weixin,新增代码"optimization":{"subPackages":true},如下图所示 "optimization" : {"subPackages" : true } 2.pages.json中 分包内静态文件示例 "subPackages&…...
MySQL-10.DML-添加数据insert
一.DML(INSERT) -- DDL:数据操作语言 -- DML:插入数据 - insert -- 1.为tb_emp表的username,name,gender字段插入值 insert into tb_emp (username,name,gender) values (wuji,无忌,1); -- 这样会报错,因为create_ti…...
ARM/Linux嵌入式面经(四八):tp-link联洲国际
文章目录 1. **模电基础**:请解释共射电路的工作原理,并描述如何计算其放大倍数。工作原理放大倍数计算面试官追问及回答2. **DCDC损耗**:有哪些方法可以降低DCDC转换器的损耗?3. **示波器使用**:如何用示波器正确测量DCDC的开关纹波?4. **IIC通信**:IIC通信协议中是否需…...
代码实践篇四 形状检测与规则重建
本节内容主要涉及形状检测(Shape Detection)与形状重建(Shape Reconstruction),具体算法步骤会在后续章节介绍。CGAL在6.0重点更新了形状重建部分的一些模块——动态空间分割与动态形状重建等,也会在后续详…...
JVM(HotSpot):GC之垃圾回收阶段
文章目录 前言一、标记清除算法(Mark Sweep)二、标记整理算法(Mark Compact)三、复制算法(Copy) 前言 标记出垃圾对象之后,就要进行清理。 那么,如何清理? 这里也有相应的算法。 主要有三种。 一、标记清除算法(Mark Sweep) 原理说明&…...
Go 项目如何集成类似mybatisPlus插件呢?GORM走起!!
导读: 在 Go 项目中,虽然没有像 MyBatis Plus 这样特定的 ORM 插件,但可以使用功能相似的 Go ORM 框架,比如 GORM,它支持链式查询、自动迁移、预加载等功能,与 MyBatis Plus 有相似之处。通过一些插件或扩…...
《深度学习》Dlib库 CNN卷积神经网络 人脸识别
目录 一、如何实现CNN人脸识别 1、CNN核心概念 1)卷积层 2)池化层 3)激活函数 4)全连接层 2、步骤 1)加载预训练的人脸识别模型 2)读取图像并检测人脸 3)提取人脸特征向量 4…...
滚雪球学Redis[7.1讲]:Redis实战案例
全文目录: 🎉前言🚦1. 使用Redis实现会话管理在Web应用中使用Redis管理会话会话过期与刷新策略安全性考虑与优化 🧩2. 使用Redis实现缓存系统缓存的基本原理Redis缓存的应用场景缓存失效策略与雪崩预防 ✨3. Redis在排行榜系统中的…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
