C# 字符串操作指南:长度、连接、插值、特殊字符和实用方法
字符串用于存储文本。一个字符串变量包含由双引号括起的字符集合
示例:
// 创建一个string类型的变量并赋予一个值
string greeting = "Hello";
如果需要,一个字符串变量可以包含多个单词:
示例:
string greeting2 = "Nice to meet you!";
字符串长度
在 C# 中,字符串实际上是一个对象,其中包含可以在字符串上执行某些操作的属性和方法。例如,可以使用 Length
属性找到字符串的长度:
示例:
string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Console.WriteLine("txt字符串的长度是:" + txt.Length);
其他方法
有许多可用的字符串方法,例如 ToUpper()
和 ToLower()
,它们分别返回字符串转换为大写或小写的副本:
示例:
string txt = "Hello World";
Console.WriteLine(txt.ToUpper()); // 输出 "HELLO WORLD"
Console.WriteLine(txt.ToLower()); // 输出 "hello world"
C# 字符串连接
字符串连接 +
运算符可用于在字符串之间进行连接。这被称为串联:
示例:
string firstName = "John ";
string lastName = "Doe";
string name = firstName + lastName;
Console.WriteLine(name);
请注意,我们在 "John" 之后添加了一个空格,以在打印时在 firstName
和 lastName
之间创建一个空格。
您还可以使用 string.Concat()
方法来连接两个字符串:
示例:
string firstName = "John ";
string lastName = "Doe";
string name = string.Concat(firstName, lastName);
Console.WriteLine(name);
添加数字和字符串
警告!
C# 使用 +
运算符同时进行加法和连接。
记住:数字相加,字符串连接。
如果您将两个数字相加,结果将是一个数字:
示例:
int x = 10;
int y = 20;
int z = x + y; // z 将是 30(整数/数字)
如果您将两个字符串相加,结果将是字符串连接:
示例:
string x = "10";
string y = "20";
string z = x + y; // z 将是 "1020"(一个字符串)
C# 字符串插值
字符串插值是字符串连接的另一种选择,它将变量的值替换到字符串中的占位符中。请注意,与连接不同,您无需担心空格:
示例:
string firstName = "John";
string lastName = "Doe";
string name = $"My full name is: {firstName} {lastName}";
Console.WriteLine(name);
还请注意,在使用字符串插值方法时,必须使用美元符号($)。
字符串插值是在 C# 版本 6 中引入的。
C# 访问字符串
访问字符串的字符可以通过在方括号[]内引用其索引号来实现。
示例:
string myString = "Hello";
Console.WriteLine(myString[0]); // 输出 "H"
注意:字符串索引从0开始:[0]是第一个字符,[1]是第二个字符,依此类推。
示例:
string myString = "Hello";
Console.WriteLine(myString[1]); // 输出 "e"
您还可以使用 IndexOf()
方法找到字符串中特定字符的索引位置:
示例:
string myString = "Hello";
Console.WriteLine(myString.IndexOf("e")); // 输出 "1"
另一个有用的方法是 Substring()
,它从字符串中提取字符,从指定的字符位置/索引开始,并返回一个新的字符串。此方法通常与 IndexOf()
一起使用以获取特定字符的位置:
示例:
// 全名
string name = "John Doe";
// 字母D的位置
int charPos = name.IndexOf("D");
// 获取姓氏
string lastName = name.Substring(charPos);
// 打印结果
Console.WriteLine(lastName);
C# 特殊字符
由于字符串必须在引号内编写,C#将误解此字符串并生成错误:
string txt = "We are the so-called "Vikings" from the north.";
避免此问题的解决方案是使用反斜杠转义字符。
反斜杠(\)转义字符将特殊字符转换为字符串字符:
转义字符 | 结果 | 描述 |
---|---|---|
' | ' | 单引号 |
" | " | 双引号 |
\ | \ | 反斜杠 |
序列 " 在字符串中插入双引号:
示例:
string txt = "We are the so-called \"Vikings\" from the north.";
序列 ' 在字符串中插入单引号:
示例:
string txt = "It\'s alright.";
序列 \ 在字符串中插入单个反斜杠:
示例:
string txt = "The character \\ is called backslash.";
C#中的其他有用的转义字符包括:
代码 | 结果 | 尝试 |
---|---|---|
\n | 换行 | |
\t | 制表符 | |
\b | 退格 |
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
相关文章:

vue3 项目中 arguments 对象获取失败问题
在 vue3 项目中获取到的 arguments 对象与传入实参不符,打印出函数中的 arguments 对象如下...

Python异步编程原理篇之协程的IO
asyncio 作为实现异步编程的库,任务执行中遇到系统IO的时能够自动切换到其他任务。协程使用的IO模型是**IO多路复用。**在 **asyncio 低阶API** 一篇中提到过 “以Linux系统为例,IO模型有阻塞,非阻塞,IO多路复用等。asyncio 常用的是IO多路复用模型的`epoo

Java修饰符详解
想必大家已经对常用的修饰符有所了解,比如public、protected、private和final等等,已经知道大概是怎么用的,但是涉及到具体可能就有所搪塞,比如哪些可以修饰类,哪些可以修饰方法,诸如此类,此篇博文的目的就是汇总常见的情况。

Java数据结构与算法:排序算法之插入排序
插入排序是一种基础的比较排序算法,其核心思想是将待排序的序列分为两部分,一部分是已排序的,另一部分是未排序的。在未排序部分选择一个元素,插入到已排序部分的适当位置,以此类推,直到所有元素都被排序完毕。插入排序的实现简单直观,是初学者入门排序算法的绝佳选择。

Java数据结构与算法:排序算法之归并排序
归并排序是一种基于分治思想的排序算法,它将待排序的序列划分成若干个子序列,分别进行排序,最后再合并成一个有序的序列。这一过程通过递归实现,直到每个子序列中只有一个元素,即可认为其已经有序。随后,通过两两合并有序序列,最终完成整个序列的排序。

Java数据结构与算法:排序算法之选择排序
选择排序是一种基础的比较排序算法,其核心思想是通过多次遍历待排序的元素,每次找到最小(或最大)的元素,放到已排序的序列的末尾(或开头)。尽管选择排序不如一些高级排序算法在性能上优越,但它的思想清晰、实现简单,是学习排序算法的重要一步。

Java数据结构与算法:排序算法之冒泡排序
冒泡排序是一种基础的比较排序算法,其核心思想是多次遍历待排序的元素,通过不断交换相邻的元素,使得最大(或最小)的元素逐步移动到正确的位置。虽然它在效率上不如一些高级排序算法,但其实现简单,是学习排序算法的绝佳入门。

Java数据结构与算法:排序算法之快速排序
快速排序是一种基于分治思想的排序算法,通过选取一个基准元素,将序列分成两个子序列,分别对左右两个子序列进行排序,从而达到整个序列有序的目的。快速排序的关键在于分区(Partition),即将序列分成两部分,使得左边的元素都小于基准元素,右边的元素都大于基准元素。

TCP三次握手和四次挥手
看了大量的文章都不知道ack包,fin包,syn包是干嘛的?我搜了一些概念以及总结道一起是不是更容易理解一些方便后续面试使用

前端JS代码中Object类型数据的相关知识
遍历JavaScript中的对象有几种方法,包括使用for…in循环、Object.keys()方法、Object.values()方法和Object.entries()方法。因此前端传入了日期类型数据之后,如果和后台数据库中的数据类型不一致,比如数据库中的日期数据类型格式是。前端传入的Object对象中其中某个字段值是日期类型的数据,则在前端的类型就是一个。,则数据传往后端之前需要做格式类型转换。,它的值是一个中国标准时间,比如。

.Net 8.0 Web API Controllers 添加到 windows 服务
但是,如果您希望能够让它托管 API 控制器(也许是为了查看它正在运行的进程的状态),您将需要添加并进行一些更改。要卸载在终端 sc.exe 中运行的服务,请删除“My Worker Service”浏览到http://localhost:5000/my以确保它正在运行。在 Windows 中打开“服务”应用程序,您应该会在那里看到它。(如果更改了 appsettings.json 中的端口,则浏览到。在弹出窗口中,选择“文件夹”,然后按“下一步”、 “完成并关闭”在Program.cs中,您将添加。_.net8.0 服务程序

Spring Boot应用程序如何配置 HTTPS 访问方式
在 Spring Boot 应用程序中配置 HTTPS 访问方式可以根据你是否拥有由受信任的证书颁发机构(CA)签发的证书来分为两种情况:使用自签名证书和使用 CA 签发的证书。

C# 实现单线程异步互斥锁
C#对异步的支持越来越成熟,async、await简化了代码也提高了可读性,但由于在一段上下文中有了异步操作,意味着这段操作可能会被同时重复调用,如果本身没有被设计可以重复调用的情况下,就很可能会出问题。以上就是今天要讲的内容,本文简单的实现了单线程的异步互斥锁,实现起来相对简单,但作用还是比较大的。虽然说有些情况的异步是可以在前期设计上避免同时调用,比如登录按钮点击后出现蒙板不允许再次点击,但是对于已存在的代码出现了同时调用问题,此时有互斥锁则可以避免大范围改动代码,有效解决问题。_c#实现线程都要经过一个阻塞的方法,线程之间互不干涉

.net 温故知新【17】:Asp.Net Core WebAPI 中间件
一、前言 到这篇文章为止,关于.NET "温故知新"系列的基础知识就完结了,从这一系列的系统回顾和再学习,对于.NET core、ASP.NET CORE又有了一个新的认识。 不光是从使用,还包括这些知识点的原理,虽然深入原理谈不上,但对于日常使用也够了,我想的是知其然,知其所以

5分钟教会你如何在生产环境debug代码
前言 有时出现的线上bug在测试环境死活都不能复现,靠review代码猜测bug出现的原因,然后盲改代码直接在线上测试明显不靠谱。这时我们就需要在生产环境中debug代码,快速找到bug的原因,然后将锅丢出去。 生产环境的代码一般都是关闭source map和经过混淆的,那么如何进行debug代码呢

Rust之旅 - Rust概念、Windows安装、环境配置
本章节介绍Rust概念、Windows安装、环境配置以及最初级的语法。至此,我们就成功的构建了一个Rust程序,并成功在Visual Studio Code里运行了这个程序,万事俱备,我们就可以开始Rust之旅了。资料获取,更多粉丝福利,关注下方公众号获取。

轻松管理Linux磁盘空间命令:df
通过使用--output选项,可以自定义df命令的输出格式,选择显示的列以及它们的顺序。这对于筛选特定信息以便进一步处理非常有用。本文我们介绍了Linux系统上的df命令,包括基本用法、进阶用法、实际案例和场景应用,以及一些实用技巧和注意事项。df命令是系统管理中的一个重要工具,能够帮助用户有效管理磁盘空间,预防和解决潜在问题。在实际使用中,请根据具体情况选择合适的df命令选项和参数,并结合其他命令,以获取更全面的系统信息。

C语言中常用的字符串处理函数和内存操作函数
`memmove(void *destination, const void *source, size_t num)`:将`source`指向的内存块的前`num`个字节移动到`destination`所指向的内存块,即使内存块有重叠部分。返回指向`destination`的指针。- `memcpy(void *destination, const void *source, size_t num)`:将`source`指向的内存块的前`num`个字节复制到`destination`所指向的内存块。

小程序中的数据双向绑定和Vue的有什么区别
微信小程序的数据绑定跟vue的有什么区别

使用docker部署RStudio容器并结合内网穿透实现公网访问
RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE,并通过 Web 浏览器进行访问,从而将 RStudio IDE 的强大功能和工作效率带到基于服务器的集中式环境中。下面介绍在Linux docker中安装RStudio Server并结合cpolar内网穿透工具,实现远程访问,docker方式安装可以避免很多问题,一键安装,如设备没有安装docker,需提前安装docker。

Spring Boot整合日期转换器(Converter)和拦截器(HandlerInterceptor)
配置文件形式针对框架进行个性化定制,例如:拦截器,类型转化器等等。WebMvcConfigurer配置类其实是。内部的一种配置方式,采用。

Redis的key过期策略是怎么实现的
这是一道经典的Redis面试题,一个Redis中可能存在很多很多的key,这些key中可能有很大一部分都有过期时间,此时Redis服务器咋知道哪些key已经过期,哪些还没过期呢?如果直接遍历所有的key,这显然是行不通的,效率非常低!!Redis整体的策略是定期删除和惰性删除相结合。举个栗子:假如我去小卖铺买东西,付款的时候,发现东西过期了。就告知老板,于是老板下架此产品。消费者发现过期了,才去下架,这就叫。小卖铺老板主动定期抽取一部分商品,进行筛查,这就叫定期删除。

怎么用Office的Excel将图片转为excel表格?
在处理大量的表格数据时,我们经常需要将图片中的表格转换成Excel格式,以便进行更高效的数据分析和处理。2. 打开OCR软件,将需要转换的图片导入。点击“提交识别”,仅识别所点击的图片,点击“识别全部”,将识别列表上的全部图片。第四步:等识别完成后,在弹出的提示框点击“确定”,打开识别结果文件,也可点击取消,然后点击“打开文件”。第二步:点击“图片编辑”,查看图片,如有必要,可进行添加表格线和旋转、裁切图片等操作。点击“打开文件夹”可查看全部已识别的文件,点击下方“选择”,可修改识别文件的保存目录。

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE
最近,表姐遇到了一个挑战:需要从Excel文件中统计出经过分词处理的重复字段,但由于数据隐私问题,这些Excel文件不能外传。这种情况下,直接使用Excel内置功能好像是行不通的,需要借助Python脚本来实现。为了解决这个问题,我写了一个简单的数据分析和自动化办公脚本,以方便使用。想象一下,即使电脑上没有安装Python,也能通过一个简单的EXE文件轻松完成工作,这是多么方便!因此,我决定不仅要写出这个脚本,还要学会如何将其打包成一个独立的EXE文件。这样,无需Python环境的电脑也能直接运行它

深入解析JavaScript的原生原型
在JavaScript中,除了自定义对象,还存在很多由JavaScript语言本身提供的原生对象。这些原生对象同样基于原型继承机制,拥有自己的原型。理解原生对象的原型非常重要,可以让我们正确使用这些内置对象,也有助于进一步理解JavaScript的原型继承系统。本文将详细解析原生对象的原型结构,揭开一些常见原生对象原型的神秘面纱。学习原生对象的原型关系,有助于我们在日常开发中正确理解和使用这些JavaScript内置对象,避免一些常见陷阱。

WebSocket 入门实战
这个简单示例演示了如何使用 Spring Boot 和 Spring WebSocket 创建一个基本的 WebSocket 服务。通过这个例子,可以了解 WebSocket 在实时通信中的应用,如果大家在平时工作当中有遇到需要实时推送的场景,比如大屏实时展示数据变化,就可以用这种发放时。

深入三目运算符:JavaScript、C++ 和 Python 比较
三目运算符是编程中常用的条件表达式,它允许我们根据条件选择不同的值。我们将通过具体的例子分别介绍 JavaScript、C++ 和 Python 中的三目运算符,以便更好地理解它们的用法和特性。JavaScript 示例// 例子: 根据条件选择不同的值var x = 10;var y = 20;"x 大于 y" : "x 不大于 y";在这个例子中,如果x大于y,则result的值为 “x 大于 y”,否则为 “x 不大于 y”。C++ 示例// 例子: 根据条件选择不同的值。

Java中的4种引用类型,你知道几种?
Java作为一门面向对象的编程语言,内存管理一直是程序员需要关注的重要方面。在Java中,垃圾回收机制负责自动管理内存,而引用类型则是垃圾回收的重要参考。本文将深入讨论Java中的四种引用类型:强引用、弱引用、软引用和虚引用,以及它们在内存管理中的应用和区别。

Docker网络配置&网络模式
网络相关概念,子网掩码、网关、规则的介绍及网络模式bridge、host详解,Dockers自定义网络配置

.NET使用QuestPDF高效地生成PDF文档
前言 在.NET平台中操作生成PDF的类库有很多如常见的有iTextSharp、PDFsharp、Aspose.PDF等,今天我们分享一个用于生成PDF文档的现代开源.NET库:QuestPDF,本文将介绍QuestPDF并使用它快速实现发票PDF文档生成功能。 QuestPDF介绍 QuestPD