C# 字符串(String)
文章目录
- 前言
- 创建 String 对象的方式
- 1. 通过给 String 变量指定一个字符串
- 2. 通过使用 String 类构造函数
- 3. 通过使用字符串串联运算符( + )
- 4. 通过检索属性或调用一个返回字符串的方法
- 5. 通过格式化方法来转换一个值或对象为它的字符串表示形式
- String 类的属性
- String 类的方法
- 相关实例演示
- 比较字符串实例
- 字符串包含字符串实例
- 获取子字符串实例
- 连接字符串实例
前言
在 C# 中,虽然可以使用字符数组来表示字符串,但更为常见的做法是运用 string 关键字声明字符串变量。实际上,string 关键字是 System.String 类的别名,这意味着我们在使用 string 进行操作时,本质上就是在操作 System.String 类的实例。

创建 String 对象的方式
1. 通过给 String 变量指定一个字符串
这是最为直观的方式,直接将一个具体的字符串赋值给声明的 string 变量,例如:
string message = "Hello, World!";
2. 通过使用 String 类构造函数
可以利用字符数组等方式通过构造函数来创建 String 对象,如下所示:
char[] letters = { 'H', 'e', 'l', 'l','o' };
string greetings = new string(letters);
3. 通过使用字符串串联运算符( + )
能够将多个字符串或者包含字符串的表达式通过 + 运算符连接起来形成新的字符串,像这样:
string fname = "Rowan";
string lname = "Atkinson";
string fullname = fname + lname;
4. 通过检索属性或调用一个返回字符串的方法
比如从某个对象中获取其返回字符串类型的属性值,或者调用返回字符串的方法来得到 String 对象,示例如下:
string[] sarray = { "Hello", "From", "Tutorials", "Point" };
string message = String.Join(" ", sarray);
5. 通过格式化方法来转换一个值或对象为它的字符串表示形式
借助格式化方法,可以把如日期、数值等不同类型的数据按照特定格式转换为字符串,例如:
DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);
String 类的属性
String 类包含以下两个常用属性:
Chars: 用于在当前 String 对象中获取指定位置的 Char 对象。通过它能够访问字符串中特定索引位置上的字符。
Length: 可以获取当前 String 对象中包含的字符数量,方便我们知晓字符串的长度信息,在很多涉及字符串处理的逻辑中,比如循环遍历字符串等场景经常会用到。
String 类的方法



相关实例演示
比较字符串实例
以下代码演示了使用 String.Compare 方法来比较两个字符串是否相等(区分大小写情况):
using System;namespace StringApplication
{class StringProg{static void Main(string[] args){string str1 = "This is test";string str2 = "This is text";if (String.Compare(str1, str2) == 0){Console.WriteLine(str1 + " and " + str2 + " are equal.");}else{Console.WriteLine(str1 + " and " + str2 + " are not equal.");}Console.ReadKey();}}
}
编译并执行上述代码,会输出相应结果表明两个字符串是否相等。
字符串包含字符串实例
下面的代码展示了运用 Contains 方法来判断一个字符串中是否包含特定的子字符串:
using System;namespace StringApplication
{class StringProg{static void Main(string[] args){string str = "This is test";if (str.Contains("test")){Console.WriteLine("The sequence 'test' was found.");}Console.ReadKey();}}
}
执行后会根据是否包含指定子字符串输出对应的提示信息。
获取子字符串实例
以下示例代码演示了如何通过 Substring 方法从一个字符串中获取指定位置开始的子字符串:
using System;
namespace StringApplication
{class StringProg{static void Main(string[] args){string str = "Last night I dreamt of San Pedro";Console.WriteLine(str);string substr = str.Substring(23);Console.WriteLine(substr);Console.ReadKey();}}
}
运行代码后会输出原始字符串以及提取出来的子字符串内容。
连接字符串实例
这段代码体现了使用 String.Join 方法将字符串数组中的元素按照指定分隔符连接成一个字符串的操作:
using System;namespace StringApplication
{class StringProg{static void Main(string[] args){string[] starray = new string[]{"Down the way nights are dark","And the sun shines daily on the mountain top","I took a trip on a sailing ship","And when I reached Jamaica","I made a stop"};string str = String.Join("\n", starray);Console.WriteLine(str);Console.ReadKey();}}
}
执行代码后会按照设定的换行符分隔,输出连接后的字符串内容。

相关文章:
C# 字符串(String)
文章目录 前言创建 String 对象的方式1. 通过给 String 变量指定一个字符串2. 通过使用 String 类构造函数3. 通过使用字符串串联运算符( )4. 通过检索属性或调用一个返回字符串的方法5. 通过格式化方法来转换一个值或对象为它的字符串表示形式 String …...
二进制文件
大多数人听到“二进制”的时候,脑海里可能马上就会联想到电影《黑客帝国》中由“0”和“1”组成的矩阵。 笔者不打算在这里详细讨论二进制的运算、反码、补码之类枯燥的东西,但有几个和开发相关的概念需要做一点澄清和普及。因为这些内容就像空气——用…...
【电子元器件】音频功放种类
本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 音频功放将小信号的幅值提高至有用电平,同时保留小信号的细节,这称为线性度。放大器的线性…...
linux之vim
一、模式转换命令 vim主要有三种模式:命令模式(Normal Mode)、输入模式(Insert Mode)和底线命令模式(Command-Line Mode)。 从命令模式切换到输入模式:i:在当前光标所在…...
QT的ui界面显示不全问题(适应高分辨率屏幕)
//自动适应高分辨率 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);一、问题 电脑分辨率高,默认情况下,打开QT的ui界面,显示不全按钮内容 二、解决方案 如果自己的电脑分辨率较高,可以尝试以下方案:自…...
数据结构--串、数组和广义表
串 定义:串(String)是由零个或多个字符组成的有限序列。 子串:串中任意个连续字符组成的子序列称为该串的子串。 主串:包含子串的串相应地称为主串。 字符位置:字符在该序列中的序号为该字符在串中的位置…...
LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略
LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略 导读:这篇博文介绍了 Lares,一个由简单的 AI 代理驱动的智能家居助手模拟器,它展现出令人惊讶的解决问题能力。 >> 背景痛点:每天都有新的…...
1-1.mysql2 之 mysql2 初识(mysql2 初识案例、初识案例挖掘)
一、mysql2 概述 mysql2 是一个用于 Node.js 的 MySQL 客户端库 mysql2 是 mysql 库的一个改进版本,提供了更好的性能和更多的功能 使用 mysql2 之前,需要先安装它 npm install mysql2 二、mysql2 初识案例 1、数据库准备 创建数据库 testdb CREAT…...
企业邮箱为什么不能经常群发邮件?
企业邮箱是用企业域名作为后缀的邮箱,虽然企业邮箱确实具备群发邮件的功能,但它更适用于企业内部的群发,而非用于外部推广。如果是在企业邮件域内进行群发,通常可以借助企业邮箱的邮件列表来实现。然而,对于域外的大量…...
集成运算放大电路反馈判断
集成运算放大电路 一种具有很高放大倍数的多级直接耦合放大电路,因最初用于信号运算而得名,简称集成运放或运放 模拟集成电路中的典型组件,是发展最快、品种最多、应用最广的一种 反馈 将放大电路输出信号的一部分或全部通过某种电路引回到输…...
媒体查询、浏览器一帧渲染过程
文章目录 媒体查询语法示例根据视口宽度应用不同的样式根据设备像素比应用不同的样式根据方向应用不同的样式 使用场景 浏览器一帧的渲染过程 媒体查询 媒体查询(Media Query)是CSS3中的一个重要特性,它允许开发者根据设备的特定条件&#x…...
高级排序算法(一):快速排序详解
引言 当我们处理大规模数据时,像冒泡排序、选择排序这样的基础排序算法就有点力不从心了。这时候,快速排序(Quick Sort)就派上用场了。 作为一种基于分治法的高效排序算法,快速排序在大多数情况下可以在O(n log n)的时…...
3.2 网络协议IP
欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 1 定义2 虚拟互连网络3 分组在互联网中的传送4 IPv4 地址 1 定义 网际协议 IP是 TCP/IP 体系中两个最主要的协议之一,也是最重要的互连网协议之一。IPv4 和 IPv6 …...
2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组)
2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组) 1.基础设置和安全强化(xxx 分)1.3. 任务内容: 2.安全监测和预警(xxx 分)2.1. 任务一:建立目录安…...
excel如何让单元格选中时显示提示信息?
现象: 当鼠标放在单元格上,会出现提示信息: 先选中单元格选择上方的【数据】-【数据验证】图标选择【输入信息】勾上【选定单元格时显示输入信息】输入【标题】,如:最上方图中的:姓名:输入【输…...
oscp备考,oscp系列——Kioptix Level 3靶场
Kioptix Level 3 oscp备考,oscp系列——Kioptix Level 3靶场 nmap扫描 主机发现 └─# nmap -sn 192.168.80.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-09 00:33 CST Nmap scan report for 192.168.80.1 Host is up (0.00014s latency). MAC…...
信创改造-达梦数据库配置项 dm.ini 优化
设置模式:兼容MySQL,COMPATIBLE_MODE 4 内存占比:90%,MAX_OS_MEMORY 90 目标内存:2G(不影响申请内存超过2G,但这部分内存不会回收),MEMORY_TARGET 2000 参考 https:…...
日本IT-需要掌握哪些技术框架?一篇通读
在日本从事IT工作,需要掌握的技术框架与全球范围内的趋势相似,但也有一些特定的技术和框架在日本更为流行。以下是一些在日本IT行业中常用的技术框架: Java后端 Java语言:Java在日本是一门非常稳定且受欢迎的编程语言࿰…...
错题:Linux C语言
题目:手写代码:判断一个数(int类型的整数)中有有多少1 题目:手写代码:判断一个数(转换成二进制表示时)有几个1 #include <stdio.h> int main(int argc, const char *argv[]) { //判断一个数…...
多表设计-一对多一对多-外键
一.多表设计概述: 二.一对多: 1.需求: 根据 页面原型 及 需求文档,完成部门及员工模块的表结构设计 -->部门和员工就是一对多,因为一个部门下会有多个员工,但一个员工只归属一个部门 2.页面原型&…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
