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

C#中List、Path、字符串操作等常用方法总结

C#常用方法

  • 一、 List
    • 1. 创建与初始化​​
    • ​​2. 增删改查​​
    • ​​3. 排序与反转​​
    • 4. 转换与复制​​
    • ​​5. 遍历与统计​​
  • 二、 Path
    • 1. 路径组合与分解​​
    • 2. 路径转换与判断​​
    • 3. 路径操作与工具​​
    • 4. 注意事项​​
  • 三、 字符串操作
    • 1. ​​定义与访问​​
    • 2. ​​拼接​​
    • 3. ​​子字符串​​
    • 4. ​​大小写转换​​
    • 5. ​​查找​​
    • 6. ​​替换​​
    • 7. ​​正则表达式​​
    • 8.​​格式化​​
    • 9. ​​分割​​
    • 10. ​​去除空格​​
    • 11. 填充字符​​
    • 12. ​​比较与判断​​

一、 List

1. 创建与初始化​​

  • 空列表​​:List numbers = new List();
  • ​​初始化元素​​:List names = new List { “Alice”, “Bob” };
  • ​​指定容量​​:List values = new List(100);(预分配内存,减少扩容开销)

​​2. 增删改查​​

  • ​​添加元素​​:
    Add(10):末尾添加单个元素。
    AddRange(new[] { 20, 30 }):批量添加元素。

  • ​​删除元素​​:
    Remove(20):删除第一个匹配项。
    RemoveAt(1):按索引删除。
    RemoveAll(x => x > 5):删除所有符合条件的元素。

  • ​​修改元素​​:通过索引直接赋值,如numbers[0] = 100;。

  • ​​查找元素​​:
    Contains(10):判断是否存在。
    IndexOf(20):返回首个匹配项的索引。
    Find(x => x % 2 == 0):查找符合条件的第一个元素。

​​3. 排序与反转​​

  • ​​排序​​:
    Sort():默认升序(需元素实现IComparable接口)。
    Sort((a, b) => b.CompareTo(a)):自定义降序。
  • 反转​​:Reverse()

4. 转换与复制​​

  • ​​转数组​​:ToArray()。
  • ​​复制到数组​​:CopyTo(new int[5])。
  • ​​批量复制​​:List.CopyTo方法。

​​5. 遍历与统计​​

  • ​​遍历​​:
    foreach (var item in list):推荐,简洁高效。
    for (int i = 0; i < list.Count; i++):需索引时使用。
  • ​​统计​​:
    Count:元素数量。
    Capacity:当前容量(可动态调整)。
using System;
using System.Collections.Generic;
using System.Linq;class Program
{static void Main(){List<int> numbers = new List<int>();// 添加元素numbers.Add(1);numbers.Add(2);numbers.Add(3);// 插入元素numbers.Insert(2, 4);// 查找元素bool contains3 = numbers.Contains(3); // 返回 trueint indexOf4 = numbers.IndexOf(4); // 返回 2// 移除元素numbers.Remove(2);numbers.RemoveAt(0);// 统计和求和int sum = numbers.Sum(); // 使用默认的加法选择器double average = numbers.Average(); // 使用默认的加法选择器// 打印结果Console.WriteLine("Sum: " + sum);Console.WriteLine("Average: " + average);// 转换和复制int[] array = numbers.ToArray();numbers.CopyTo(array);// 排序和反转numbers.Sort();numbers.Reverse();// 打印排序和反转后的结果foreach (int number in numbers){Console.WriteLine(number);}}
}

二、 Path

1. 路径组合与分解​​

  • ​​Path.Combine(params string[] paths)​​
    合并多个路径段为完整路径,自动处理分隔符(如C:\folder+ file.txt→ C:\folder\file.txt)。
  • ​​Path.GetDirectoryName(string path)​​
    获取路径的目录部分(不含末尾分隔符),如C:\folder\file.txt→ C:\folder。
  • ​​ Path.GetFileName(string path)​​
    获取路径的文件名(含扩展名),如C:\folder\file.txt→ file.txt。
  • ​​Path.GetFileNameWithoutExtension(string path)​​
    获取文件名(不含扩展名),如file.txt→ file。
  • ​​Path.GetExtension(string path)​​
    获取文件扩展名(含.),如file.txt→ .txt。

2. 路径转换与判断​​

  • ​​Path.GetFullPath(string path)​​
    将相对路径转换为绝对路径,解析…等相对符号。
  • ​​Path.IsPathRooted(string path)​​
    判断路径是否为绝对路径(如C:`为绝对路径,folder`为相对路径)。
  • ​​Path.GetPathRoot(string path)​​
    获取路径的根目录(如C:`的根为C:`,\server\share的根为\server\share)。

3. 路径操作与工具​​

  • Path.ChangeExtension(string path, string extension)​​
    更改文件扩展名(如file.txt→ file.md),原扩展名会被替换。
  • ​​Path.GetTempPath()​​
    返回系统临时文件夹路径(如C:\Windows\Temp)。
  • ​​Path.GetTempFileName()​​
    在临时文件夹中创建唯一临时文件并返回路径(如C:\Temp\tmp123.tmp)。

4. 注意事项​​

1.​​参数校验​​:需检查路径是否为null或空字符串,避免抛出异常。
2.​​跨平台兼容​​:Path类自动适配不同操作系统的路径分隔符(Windows为`,Linux/macOS为/`)。
3.​​路径格式化​​:Combine不会合并多个连续分隔符,GetFullPath会规范化路径(如C:\folder\…\file→ C:\file)。

using System;
using System.IO;class Program
{static void Main(){string folderPath = @"C:\example";string fileName = "file.txt";// 合并路径string fullPath = Path.Combine(folderPath, fileName);Console.WriteLine($"Full Path: {fullPath}");// 获取目录名string directoryName = Path.GetDirectoryName(fullPath);Console.WriteLine($"Directory Name: {directoryName}");// 获取文件名string file = Path.GetFileName(fullPath);Console.WriteLine($"File Name: {file}");// 获取不含扩展名的文件名string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fullPath);Console.WriteLine($"File Name Without Extension: {fileNameWithoutExtension}");// 获取扩展名string extension = Path.GetExtension(fullPath);Console.WriteLine($"Extension: {extension}");// 更改扩展名string newFullPath = Path.ChangeExtension(fullPath, ".md");Console.WriteLine($"New Full Path with Extension .md: {newFullPath}");// 获取绝对路径string fullPathAbsolute = Path.GetFullPath(fileName);Console.WriteLine($"Full Absolute Path: {fullPathAbsolute}");// 获取临时文件夹路径string tempPath = Path.GetTempPath();Console.WriteLine($"Temp Path: {tempPath}");// 创建临时文件string tempFile = Path.GetTempFileName();Console.WriteLine($"Temp File: {tempFile}");}
}

三、 字符串操作

1. ​​定义与访问​​

  • 定义:string str = “Hello, World!”;
  • 访问字符:char c = str[0]; // ‘H’
  • 长度:int len = str.Length; // 13

2. ​​拼接​​

  • +运算符:string s = “A” + “B”; // “AB”
  • String.Concat:string s = string.Concat(“A”, “B”, “C”);
  • StringBuilder(高效拼接大量字符串):
StringBuilder sb = new StringBuilder();
sb.Append("A").Append("B");
string s = sb.ToString();

3. ​​子字符串​​

  • Substring(startIndex, length):提取指定位置和长度的子串。
string s = "Hello".Substring(1, 3); // "ell"

4. ​​大小写转换​​

  • ToUpper():转大写。
  • ToLower():转小写。
string s = "Hello".ToUpper(); // "HELLO"

5. ​​查找​​

  • IndexOf(char/substring):返回首次出现的位置(未找到返回-1)。
  • LastIndexOf:返回最后一次出现的位置。
int index = "Hello".IndexOf('l'); // 2

6. ​​替换​​

  • Replace(oldValue, newValue):替换字符或子串。
string s = "Hello".Replace('l', 'x'); // "Hexxo"

7. ​​正则表达式​​

  • Regex.IsMatch:验证字符串是否符合模式(如邮箱、手机号)。
  • Regex.Replace:复杂替换(如提取数字)。
using System.Text.RegularExpressions;
bool isValidEmail = Regex.IsMatch("test@example.com", @"^\w+@\w+\.\w+$");

8.​​格式化​​

  • ​​插值字符串​​(C# 6.0+):string s = $“Name: {name}, Age: {age}”;

  • String.Format:string s = string.Format(“Name: {0}, Age: {1}”, name, age);

9. ​​分割​​

  • Split(char/delimiter):按分隔符拆分字符串为数组。
string[] fruits = "apple,banana,orange".Split(','); // ["apple", "banana", "orange"]

10. ​​去除空格​​

  • Trim():去除首尾空格。
  • TrimStart() / TrimEnd():分别去除首部/尾部空格。
string s = "  Hello  ".Trim(); // "Hello"

11. 填充字符​​

  • PadLeft/PadRight(totalWidth, paddingChar):在左侧/右侧填充指定字符至指定长度。
string s = "123".PadLeft(5, '0'); // "00123"

12. ​​比较与判断​​

  • Equals:比较两个字符串是否相等(可忽略大小写)。
  • StartsWith/EndsWith:判断是否以指定字符开头/结尾。
bool isStartWith = "Hello".StartsWith("H"); // true
http://www.xdnf.cn/news/1319059.html

相关文章:

  • ​​Vue 3 开发速成手册
  • 说一下事件传播机制
  • Python注解
  • Python入门第7课:异常处理机制:让你的程序更健壮(try-except详解)
  • 配置 NVIDIA RTX 5090 + sm_120 + flashattention,已跑通一个大模型 ~~
  • C语言(12)——进阶函数
  • Day3--滑动窗口与双指针--2461. 长度为 K 子数组中的最大和,1423. 可获得的最大点数,1052. 爱生气的书店老板
  • 数字货币的法律属性与监管完善路径探析
  • 实变函数中集合E的边界与其补集的边界是否相等
  • Android中使用Compose实现各种样式Dialog
  • Dify 从入门到精通(第 40/100 篇):Dify 的企业级权限管理
  • Mutually aided uncertainty
  • Windchill 11.0使用枚举类型自定义实用程序实现生命周期状态管理
  • Makefile介绍(Makefile教程)(C/C++编译构建、自动化构建工具)
  • 计算机网络 TCP、UDP 区别
  • 从需求到部署全套方案:餐饮服务许可证数据可视化分析系统的大数据技术实战
  • Bee1.17.25更新Bug,完善功能.不支持NOSQL,分库分表Sharding(2.X版有)
  • C语言网络编程TCP通信实战:客户端↔服务器双向键盘互动全流程解析
  • 模拟实现 useEffect 功能
  • 【R语言】R 语言中打印含有双引号的字符串时会出现 “\” 的原因解析
  • 基于STM32单片机智能RFID刷卡汽车位锁桩设计
  • 基于51单片机汽车自动照明灯超声波光敏远近光灯设计
  • 自由学习记录(85)
  • TensorRT-LLM.V1.1.0rc0:在无 GitHub 访问权限的服务器上编译 TensorRT-LLM 的完整实践
  • 计算机网络 TCP time_wait 状态 详解
  • Java开发MCP服务器
  • thingsboard 服务器在2核CPU、2G内存资源配置下如何调优提速,适合开发/演示
  • vue封装请求拦截器 响应拦截器
  • 计算机网络 Session 劫持 原理和防御措施
  • 给纯小白的Python操作 PDF 笔记