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