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

C#中字符串方法

字符串属性:Lenght  长度比最大索引大1 

string str = "frerfgd";
1.可以通过索引,获取字符串中的某一个字符,下标“0,1.......”
Console.WriteLine(str[0]);//f
Console.WriteLine(str[1]);//r
//Console.WriteLine(str[20]); 下标越界“不存在的下标”,报错
Console.WriteLine(str.Length);//7  获取字符串长度“获取字符的个数” 
Console.WriteLine(str.Length-1);//6

字符串遍历

 for (int i = 0; i < str.Length; i++){Console.WriteLine(str[i]);//frerfgd}

 字符串内置了很多的API(函数), API就是一个对象里面提供的属性或提供的方法,别人准备好的直接拿来用。

字符串可以通过索引来访问,如:str[index],因为string类中定义一个索引器。

1. Concat( )  拼接字符串

 String.Concat(字符串1+ 字符串n) ,参数可以是多个,使用逗号隔开。

 string s1 = "hello", s2 = "你好", s3 = "123";int num = 1000;//①字符串拼接string s4 = s1 + s2 + s3;Console.WriteLine(s4);//hello你好123//②
//Concat()拼接字符串,参数可以是多个,使用逗号隔开。
s4 = string.Concat(s1, s2, s3, num);
Console.WriteLine(s4);//hello你好1231000

2.Contains( ):

字符串1.Contains(字符串2) ,判断参数是否在字符串中存在,返回布尔值,使用bool值去接收。

 bool b = s4.Contains(s1);//bool b1 = s4.Contains("13"); //false  不相邻会报错Console.WriteLine(b);//true

3.  CopyTo(c1,c2,c3,c4) :

字符串1.CopyTo(0,空数组,0,5) ,从字符串中复制一部分字符到一个字符数组中

Console.WriteLine(s4);//hello你好1231000
//声明了一个长度为10的字符数组
char[] chars = new char[10];
//CopyTo(c1,c2,c3,c4) 从字符串中复制一部分字符到一个字符数组中
//参数(1,字符串开始复制的下标。2.字符数组。3.插入字符数组的起始下标。4.复制的个数。)  2.字符数组一般推荐使用Length,从数组末尾插入一个,不会把别的给代替了
s4.CopyTo(1, chars, 0, 5);
//将char类型数组转换为字符串。
string charStr = new string(chars);
Console.WriteLine(charStr);//ello你

4. StartsWith( ):

字符串1.StartsWith("字符串") ,判断参数字符,在字符串中是否是开头字符,返回布尔值。

string names = "张杰毛不易张三毛晓彤CC";
Console.WriteLine(names.StartsWith("张"));//true
Console.WriteLine(names.StartsWith("毛"));//false
Console.WriteLine(names.StartsWith("张毛"));//false

5. EndsWith( ):

字符串1.EndsWith("字符串") ,判断参数字符,在字符串中是否是结束字符,返回布尔值。

EndsWith() 判断参数字符,在字符串中是否是结束字符,返回布尔值。
Console.WriteLine(names.EndsWith("易"));//true
Console.WriteLine(names.EndsWith("毛"));//false

6. Equals( )

字符串1.Equals("字符串") ,判断源字符串(谁调用的)和 参数字符串是否完全相等 ==,相等返回true,不相等返回false。

string names = "张杰毛不易张三毛晓彤CC";
Console.WriteLine(names.Equals(names));//true
Console.WriteLine(names.Equals(s4));//false

7. IndexOf( )

字符串1. IndexOf("字符串") ,查询参数在字符串中第一次出现的下标,找不到返回-1

Console.WriteLine(names.IndexOf("张"));//0
Console.WriteLine(names.IndexOf("毛"));//2
Console.WriteLine(names.IndexOf("李"));//-1 不存在返回-1
Console.WriteLine(names.IndexOf("c"));//-1 区分大小写
Console.WriteLine(names.IndexOf("C"));//10

8. LastIndexOf( )

字符串1.Lastlndex0f("字符串") ,查询参数在字符串中最后一次出现的下标,找不到返回-1

Console.WriteLine(names.LastIndexOf("张"));//5
Console.WriteLine(names.LastIndexOf("毛"));//7
Console.WriteLine(names.LastIndexOf("李"));//-1

9. 会忽略 大小写进行查询

string str1 = "aseafefAbDASFBa";
Console.WriteLine(str1.IndexOf("b")); //8
// 会忽略 大小写进行查询
Console.WriteLine(str1.IndexOf("b", StringComparison.OrdinalIgnoreCase)); //8
Console.WriteLine(str1.IndexOf("a", 3)); //3, 从指定的索引位置开始查询指定字符
Console.WriteLine(str1.LastIndexOf("a", 3)); //3,从后向前查询参数字符串首次出现的索引位置。

10. IndexOfAny( char[ ] )

字符串1.lndex0fAny(字符类型的数组) ,从前向后查询源字符串中首次出现的指定字符数组中任意一个字符的位置

Console.WriteLine(str1.IndexOfAny(new char[] { 'b', '1', '2', 'a' }));//0

11. LastIndexOfAny( char[ ] )

字符串1.Lastlndex0fAny(字符类型的数组),从后向查前询源字符串中首次出现的指定字符数组中任意一个字符的位置

Console.WriteLine(str1.LastIndexOfAny(new char[] { 'b', '1', '2', 'a' }));//14

12. Insert( )

插入:字符串1.Insert(插入索引,插入的字符串) ,在指定下标的位置插入指定的字符串,形成新的字符串。

string oldString = "hello";
string newStr4 = oldString.Insert(1, "AAAA");
Console.WriteLine(newStr4);// hAAAAello
Console.WriteLine(oldString);//hello

13. Remove( )

字符串1.Remove(索引,删除个数) 

删除,一个参数从指定下标开始删除到字符串末尾,返回新的字符串

string newStr5 = oldString.Remove(1, 3);
Console.WriteLine(newStr5);//ho
Console.WriteLine(oldString);//hello

14. Replace( )

字符串1.Replace (old, new)

替换,新旧字符串替换,也可以替换某个字符,返回新的字符串

string newStr6 = oldString.Replace("ll", "AA");
Console.WriteLine(newStr6);//heAAo
Console.WriteLine(oldString);//hellostring newStr7 = oldString.Replace('l', 'A');
Console.WriteLine(newStr7);//heAAo
Console.WriteLine(oldString);//hello

15. IsNullOrEmpty( )

判断参数是否是Null 或者 是Empty"空字符串"和WhiteSpace空格,是返回true,不是返回false。

string str2 = "";
string names = "张杰毛不易张三毛晓彤CC";
Console.WriteLine(string.IsNullOrEmpty(str2));//true
Console.WriteLine(string.IsNullOrEmpty(names));//false
Console.WriteLine(string.IsNullOrEmpty(null));//True

16. Join(参数1,参数2)

字符串拼接:("分隔符",数组) 指定什么东西把数组拼接成字符串

char[] cs = new char[] { 'b', '1', '2', 'a' };
string[] ss = new string[] { "张三", "李四", "王五" };
Console.WriteLine(string.Join("-", ss));//张三-李四-王五
Console.WriteLine(string.Join("=》", cs));//b=》1=》2=》a

17. SubString( )

截取字符串。参数1:起始索引 参数:截取长度

string[] strs4 = new string[] { "你好", "hello", "world" };
Console.WriteLine(string.Concat(strs4));//你好helloworld//SubString()截取字符串。参数1:起始索引 参数:截取长度
Console.WriteLine("hello".Substring(1, 3));//ell

18. ToUpper( ) 将字母切换为大写

      ToLower()  将字母切换为小写

//ToUpper( ) 将字母切换为大写
Console.WriteLine("hello".ToUpper());//HELLO
Console.WriteLine("HELLO".ToUpper());//HELLO
Console.WriteLine("中文".ToUpper());//中文//ToLower()  将字母切换为小写
Console.WriteLine("Hello".ToLower());//hello
Console.WriteLine("HELLO".ToLower());//hello
Console.WriteLine("中文".ToLower());//中文

19. ToString( )平时省略

Console.WriteLine("hello");//hello
Console.WriteLine("hello".ToString());//hello

20. Trim( ) 去除字符串两端的空格,但不会去除中间的空格。

      TrimEnd( )去除右侧的空白

     TrimStart( )去除左侧的空白

Console.WriteLine("    hel    lo    ".Trim());//hel    lo
Console.WriteLine("    hel    lo    ".TrimEnd().TrimStart());//hel    lo

21. ToCharArray( )

字符串1.ToCharArray(开始的索引,数组中的个数)不传参默认整个字符串,将一个字符串转换为char数组

char[] char2 = names.ToCharArray();
for (int i = 0; i < char2.Length; i++)
{Console.WriteLine($"{char2[i]}");
}

22. Split( " , " )

字符串1.Split("分隔符") ("自定义多个分割符","")

分割,从指定的参数字符位置开始分割,返回一个分割后对的数组。

names = "张杰,毛不易,张三,毛晓彤";
string[] arrStr = names.Split(',');//一定要有指定字符,不然没办法切割成功
for (int i = 0; i < arrStr.Length; i++)
{Console.WriteLine($"{arrStr[i]}");
}

23. SubString( )

截取字符串。参数1:起始索引 参数:截取长度

string[] strs4 = new string[] { "你好", "hello", "world" };
Console.WriteLine("hello".Substring(1, 3));//ell

24. string.Format( ) 格式化

//字符串格式化
Console.WriteLine("姓名{0},年龄{1},性别{2}", "张三", 30, true); //姓名张三,年龄30,性别True
Console.WriteLine("{0},{1}", "张三", 30, true);//张三,30Console.WriteLine(string.Format("姓名{0},年龄{1},性别{2}", "张三", 30, true)); //姓名张三,年龄30,性别True
Console.WriteLine(string.Format("{0,10}", "张三", 30, true));//张三  一个数据至少有几个字符

25. string.Format( )和ToString( ): 字符串格式化

 参考:https://learn.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings

// C货币   {0:C3},其中0表示参数索引,C3表示显示成货币,并保留3位小数
Console.WriteLine(string.Format("{0:C3}----{1:c2}", 12, 13));//¥12.000----¥13.00// N数字  显示成数字,并保留3位小数
Console.WriteLine(string.Format("{0:N3}", 12));//12.000// P百分比,显示成百分比,保留3位小数
Console.WriteLine(string.Format("{0:P3}", 0.12));//12.000%// X,Hex 16进制   0-9,A,B,C,D,E,F  显示成16进制
Console.WriteLine(string.Format("{0:X}", 12));//CConsole.WriteLine(12.ToString("N1"));//12.0
Console.WriteLine(12.ToString("C1"));//¥12.0double num1 = .12D;
double num2 = 0.12D;
Console.WriteLine(0.12.ToString("P3"));//12.000%Console.WriteLine(12.ToString("X"));//C

相关文章:

C#中字符串方法

字符串属性&#xff1a;Lenght 长度比最大索引大1 string str "frerfgd"; 1.可以通过索引&#xff0c;获取字符串中的某一个字符&#xff0c;下标“0&#xff0c;1.......” Console.WriteLine(str[0]);//f Console.WriteLine(str[1]);//r //Console.WriteLine(s…...

Python毕业设计选题:基于django+vue的二手电子设备交易平台设计与开发

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 设备类型管理 设备信息管理 系统首页 设备信息…...

【愚公系列】《微信小程序与云开发从入门到实践》059-迷你商城小程序的开发(加入购物车与创建订单功能开发)

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

Mac Android studio :gradle 配置、代理设置、及各种环境变量配置;

mac 安装 AS&#xff0c;最烦人的就是这些配置了&#xff08;吐槽一下&#xff1a;这软件真是垃圾的一批&#xff0c;同样的代码换了电脑就没法用&#xff0c;比 vscode 甚至比低评分的xcode还差劲&#xff01;&#xff09; --------------------- 一、 gradle 下载及环境变量…...

unity——Preject3——开始界面拼面板

目录 1.创建panel&#xff0c;去掉panel自带的image&#xff0c;自己加一个image&#xff0c;使用锚点分配好 2.锚点&#xff08;快捷键点击后 ALTShift&#xff09; 锚点是什么&#xff1f; 锚点的实际例子 例子1&#xff1a;固定在父容器的中心 例子2&#xff1a;对齐到…...

【达梦数据库(Oracle模式)】如何将视图中的数据导出

在某些情况下&#xff0c;我们需要将生产环境某个模式下的数据导入到开发电脑中&#xff0c;因为正式环境无法连接外网数据。 方式一&#xff1a;将视图查询出来&#xff0c;然后右键导出所有查询结果&#xff08;不推荐&#xff09; 优点&#xff1a;方便快捷 缺点&#xff1…...

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求

背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X&#xff08;车与外界通信&#xff09;的部分&#xff0c;主要关注于通信安全要求&#xff0c;旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层&#xff08;数据无异常&#xff09;、应用…...

FastAPI 应用的容器化与 Docker 部署:提升性能与可扩展性

FastAPI 应用的容器化与 Docker 部署&#xff1a;提升性能与可扩展性 目录 &#x1f433; 使用 Docker 容器化 FastAPI 应用⚙️ 使用 Docker Compose 管理多个服务的部署&#x1f680; 在 Docker 容器中部署与运行 FastAPI 应用 1. &#x1f433; 使用 Docker 容器化 FastAPI…...

QT入门的一些吐槽

QT入门的一些吐槽 看了网上的一些介绍QT的课程&#xff0c;看了一些讲述qt的书籍&#xff0c;然而再想自己做一个项目的时候&#xff0c;却发现我好像什么都不会&#xff0c;QT对我来说就是一个黑盒子。 我只会&#xff1a; 使用QT Creator创建一个项目&#xff0c;再UI文件中…...

4.Spring AI Prompt:与大模型进行有效沟通

1.什么是提示词 在人工智能领域&#xff0c;提示词&#xff08;Prompt&#xff09;扮演着至关重要的角色&#xff0c;它宛如一把精准的钥匙&#xff0c;为 AI 大模型开启理解之门。作为向模型输入的关键信息或引导性语句&#xff0c;提示词能够助力模型迅速洞悉问题需求&#…...

深入内核讲明白Android Binder【二】

深入内核讲明白Android Binder【二】 前言一、Binder通信内核源码整体思路概述1. 客户端向服务端发送数据流程概述1.1 binder_ref1.2 binder_node1.3 binder_proc1.4 binder_thread 2. 服务端的binder_node是什么时候被创建的呢&#xff1f;2.1 Binder驱动程序为服务创建binder…...

Python基于Django的图像去雾算法研究和系统实现(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

TCP 连接状态标识 | SYN, FIN, ACK, PSH, RST, URG

注&#xff1a;本文为“TCP 连接状态标识”相关文章合辑。 TCP 的状态&#xff1a;SYN, FIN, ACK, PSH, RST, URG 简介及 ACK 确认机制 llzhang_fly 于 2020-09-19 05:25:26 发布 1、TCP 的状态 FLAGS 字段状态 在 TCP 层&#xff0c;有个 FLAGS 字段&#xff0c;这个字段有…...

WXML模版语法-事件绑定

知识点1&#xff1a;什么是事件 事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为&#xff0c;反馈到逻辑层进行业务的处理。 知识点2&#xff1a;小程序中常用的事件 类型绑定方式事件描述tapbindtap或bind:tap手指触摸后马上离开&#xff0c;类似于…...

楚慧杯Web

WEB1 计算器 import requests rrequests.session() data{"answer":0} url"" for i in range(30):if i0:rrequests.get(url)dr.textdd.split(":")[22][1:].split("<br>")[0]data["answer"]str(eval(d))print(eval(d)…...

工商业储能电站能量管理本地系统及多站点云平台

一、储能站就地监控 Acre1-2000MG储能能量管理系统是针对工商业储能电站研制的本地化能量管理系统&#xff0c;可实现了储能电站的数据采集、数据处理、数据存储、数据查询与分析、可视化监控、报警管理、统计报表、策略管理、历史曲线等功能。其中策略管理&#xff0c;支持多…...

HTML标签笔记

黑马程序员视频地址&#xff1a;黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes 标题与段落 标题 <h1>~<h6> 段落 <p…...

pthread_create函数

函数原型 pthread_create 是 POSIX 线程&#xff08;pthread&#xff09;库中的一个函数&#xff0c;用于在程序中创建一个新线程。 #include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *a…...

C# 并发和并行的区别--16

目录 并发和并行 一.并发 定义 特点 代码示例 代码解释 二.并行 定义 特点 在C#中的体现 代码示例 代码解释 三.并发和并行的区别 四 .如何在C#中选择并发还是并行 1.考虑任务类型 2.代码示例 3.注意事项 五.总结 并发和并行 在编程领域,并发和并行是两个密切…...

Java日志配置

1.导入依赖 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.23.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupI…...

python中的RPA->playwright自动化录制脚本实战案例笔记

playwright录制功能使用绕过登录操作 1、首先安装playwright pip install playwright2、 安装支持的浏览器 playwright install # 安装支持的浏览器&#xff1a;cr, chromium, ff, firefox, wk 和 webkit3、接着在自己的项目下运行录制命令&#xff1a; playwright codegen…...

Linux查看日志命令

问题排查过程&#xff1a; 1. 评估问题现象是否是操作问题&#xff0c;还是服务bug&#xff0c;页面出异常信息是后端&#xff0c;没抛异常信息有可能是前端渲染问题&#xff0c;F12抓包看那个字段没有数据&#xff08;有时候需要前端帮忙确定是哪一个字段&#xff09;&#x…...

(8)ERC20详细介绍

ERC20 是以太坊上的一种代币标准&#xff08;同质化代币&#xff09;&#xff0c;由 Fabian Vogelsteller 在 2015 年提出。它定义了一组通用的接口和规则&#xff0c;使得开发者可以创建可互操作的代币。ERC20 代币在以太坊生态系统中非常流行&#xff0c;广泛应用于各种去中心…...

opencv projectPoints函数 computeCorrespondEpilines函数 undistortPoints函数

opencv projectPoints函数 cv::projectPoints 是 OpenCV 中用于将三维点投影到二维图像平面的函数。它通常用于计算在相机坐标系下的三维点在图像坐标系中的位置&#xff0c;考虑了相机的内参和外参。 函数原型 void cv::projectPoints(InputArray objectPoints,InputArray …...

springboot集成websocket实现实时大量数据,效率性能高

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01; 也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&…...

游戏引擎学习第80天

Blackboard&#xff1a;增强碰撞循环&#xff0c;循环遍历两种类型的 t 值 计划对现有的碰撞检测循环进行修改&#xff0c;以便实现一些新的功能。具体来说&#xff0c;是希望处理在游戏中定义可行走区域和地面的一些实体。尽管这是一个2D游戏&#xff0c;目标是构建一些更丰富…...

Windows 上的 MySQL 8.4.3 和 WSL(Ubuntu)的 MySQL 8.0.40 之间配置 主从同步

在 Windows 上的 MySQL 8.4.3 和 WSL&#xff08;Ubuntu&#xff09;的 MySQL 8.0.40 之间配置 主从同步&#xff08;Master-Slave Replication&#xff09; 的过程略有不同&#xff0c;因为两者的 MySQL 版本和环境存在差异。以下是详细步骤&#xff0c;帮助你完成跨平台的主从…...

【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)

&#xff1a; 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 在本篇文章中&#xff0c;博主将带大家去学习所谓的…...

Sentinel配置流控规则详解

前言 在微服务架构中&#xff0c;流量控制&#xff08;Flow Control&#xff09;是保障服务稳定性的重要手段之一。Sentinel作为一款开源的流量控制、熔断降级Java库&#xff0c;以其丰富的应用场景和完善的监控能力&#xff0c;在微服务保护中扮演了重要角色。本文将详细介绍…...

解锁动态规划的奥秘:从零到精通的创新思维解析(6)

解锁动态规划的奥秘&#xff1a;从零到精通的创新思维解析&#xff08;6&#xff09; 前言&#xff1a; 在动态规划的众多问题中&#xff0c;多状态DP问题是一个非常重要的类别。它的难点在于如何设计合适的状态表示和转移方程&#xff0c;从而高效地解决问题。 多状态DP的核…...