目录
3. 遍历磁盘,列出目录和文件、统计文件个数,统计不同类型(后缀)的文件个数
1. 字符串的常见方法
字符串的常见方法有17个,如下所示
1.1 Format (格式化字符串)
String name = "五六七";
int age = 21;
String message = "大家好,我是{0},我今年{1}岁";
Console.WriteLine(string.Format(message, name, age));
1.2 IsNullOrEmpty(检查一个字符串是否为null
或长度为零即空字符串""
)
string username = "user";
string password = "000000";
if (string.IsNullOrEmpty(username))
{
throw new ArgumentNullException("username is null");
}
else
{
if (string.IsNullOrEmpty(password))
{
throw new ArgumentNullException("password is null");
}
}
Console.WriteLine("登录成功!");
1.3 IsNullOrWhiteSpace(方法检查一个字符串是否为null
、空字符串""
或仅包含空白字符,如空格、制表符、换行符等)
string username = "user";
string password = "000000";
if (string.IsNullOrWhiteSpace(username))
{
throw new ArgumentNullException("username is null");
}
else
{
if (string.IsNullOrWhiteSpace(password))
{
throw new ArgumentNullException("password is null");
}
}
Console.WriteLine("登录成功!");
1.4 Equals(比较当前字符串与另一个字符串是否相等)
string str = "Hello";
if (str.Equals("hello"))
{
Console.WriteLine("相等");
}
else
{
Console.WriteLine("不相等");
}
1.5 Contains(判断当前字符串是否包含指定的子字符串)
string str = "Hello world";
if (str.Contains("hello"))
{
Console.WriteLine("包含");
}
else
{
Console.WriteLine("不包含");
}
1.6 Length(获取字符串长度)
string str = "Hello world";
Console.WriteLine(str.Length);
1.7 Substring(从哪个位置开始,截取多少位)(截取字符串,获取字符串的一部分,一个参数时截取到最后)
string str = "hello world.你好";
Console.WriteLine(str.Substring(1));
Console.WriteLine(str.Substring(6, 5));
1.8 IndexOf & LastIndexOf(找到某个字符串的位置,IndexOf 从前往后、LastIndexOf从后往前)
string path = "C:\\Users\\86157\\Desktop\\C#\\课堂笔记3.docx";
Console.WriteLine(path);
Console.WriteLine(path.IndexOf(":"));
Console.WriteLine(path.LastIndexOf("#"));
1.9 StartsWith & EndsWith (判断当前字符串是否以指定的字符串开头和判断当前字符串是否以指定的字符串结尾)
string path = "C:\\Users\\86157\\Desktop\\C#\\课堂笔记3.docx";
if (path.StartsWith("C:\\Users\\86157\\Desktop\\C#"))
{
Console.WriteLine("C#下的文件");
}
string extName = path.Substring(path.LastIndexOf(".") + 1);
Console.WriteLine("扩展名:{0}", extName);
if (path.EndsWith(".docx"))
{
Console.WriteLine("word文档");
}
else if (path.EndsWith(".jpg"))
{
Console.WriteLine("tu");
}
1.10 Remove(删除部分字符串)
string path = "abcdefg";
Console.WriteLine(path.Remove(3));
1.11 Reverse(字符串反转)
这里特别注意.ToArray()
string str = "asdf";
Console.WriteLine(str.Reverse().ToArray());
1.12 Trim(删除字符串两边的空格)
这里使用“-”符号为了更好的展示效果
string str1 = " ada ";
Console.WriteLine("-" + str1.Trim() + "-");
1.13 ToLower & ToUpper(转小写,转大写)
string str = "hello World";
Console.WriteLine(str.ToLower());
Console.WriteLine(str.ToUpper());
1.14 Replace(替换)
string str = "五六七";
Console.WriteLine(str.Replace("七", "⑦"));
1.15 Concat(字符串拼接,+)
string str1 = "我";
string str2 = "love";
string str3 = "你";
Console.WriteLine(string.Concat(str1,str2,str3));
1.16 Join(用于连接字符串数组)
string[] names = { "你", "wo", "他" };
Console.WriteLine(string.Join("和", names));
1.17 Split(将当前字符串分割成子字符串数组)
string citystr = "我,爱,你";
string[] cities = citystr.Split(',');
foreach (string city in cities)
{
Console.WriteLine(city);
}
2. 实现身份证的解析(练习字符串方法)
实现身份证的解析只需三步:
1.1 判断身份证格式
1.2 格式对了解析出生日期
1.3 解析性别
代码如下:
创建一个IDCardParser类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DjConsoleApp0527
{
internal class IDCardParser
{
public IDCardParser(string ID)
{
if (ID.Length != 18)
{
Console.WriteLine("你身份证号码对么?老弟!");
return;
}
else
{
Console.WriteLine("您的身份号码为:{0}", ID);
}
string birthYear = ID.Substring(6, 4);
string birthMonth = ID.Substring(10, 2);
string birthDay = ID.Substring(12, 2);
//出生日期打印
Console.WriteLine(string.Format("出生日期为:{0}年{1}月{2}日", birthYear, birthMonth, birthDay));
int genderCode = int.Parse(ID.Substring(16, 1));
string gender = genderCode % 2 == 0 ? "女" : "男";
Console.WriteLine(string.Format("性别:{0}", gender));
}
}
}
调用方法:
using DjConsoleApp0527;
string ID = "000000200304070012";
IDCardParser iDCard = new IDCardParser();
iDCard.IDCard(ID);
结果:
3. 遍历磁盘,列出目录和文件、统计文件个数,统计不同类型(后缀)的文件个数
定义一个DirectoryTraversal类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DjConsoleApp0527
{
class DirectoryTraversal
{
public static int totalFiles = 0;
public void TraverseDirectory(string path, Dictionary<string,int> extensionCount )
{
try
{
// 获取当前目录下的所有子目录
string[] subdirectories = Directory.GetDirectories(path);
foreach (string subdirectory in subdirectories)
{
// 递归遍历子目录
TraverseDirectory(subdirectory, extensionCount);
}
// 获取当前目录下的所有文件
string[] files = Directory.GetFiles(path);
foreach (string file in files)
{
// 增加文件数量计数
totalFiles++;
// 获取文件的后缀名
string extension = Path.GetExtension(file);
// 更新后缀名计数
if (extensionCount.ContainsKey(extension))
{
extensionCount[extension]++;
}
else
{
extensionCount.Add(extension, 1);
}
}
}
catch (Exception ex)
{
// 异常处理:权限不足或目录不存在等情况
Console.WriteLine("发生错误: " + ex.Message);
}
}
}
}
调用遍历函数:
using DjConsoleApp0527;
string path = @"C:\Users\86157\Desktop\mysql"; // 更改为要遍历的目标目录
DirectoryTraversal directory= new DirectoryTraversal();
Dictionary<string, int> extensionCount = new Dictionary<string, int>(); // 用于存储后缀名及其对应的文件数量
// 开始遍历目录
directory.TraverseDirectory(path, extensionCount);
// 输出总文件数量
Console.WriteLine("总文件数量: " + DirectoryTraversal.totalFiles);
// 输出按后缀名分类的文件数量
Console.WriteLine("按后缀名分类的文件数量:");
foreach (KeyValuePair<string, int> pair in extensionCount)
{
Console.WriteLine("后缀名: " + pair.Key + ", 文件数量: " + pair.Value);
}
结果:
标签:Console,string,C#,常见,str,WriteLine,字符串,path From: https://blog.csdn.net/qq_63873127/article/details/140149166
- 注意:
string
在C#中是一个不可变类型,这意味着所有字符串方法调用都会返回一个新的字符串,而不是修改原始字符串- 总结:字符串的方法还有很多,我上面写的只是常见的,一定要牢记,这些都是非常重要的东西!